Diff for /parser3/src/include/pa_request.h between versions 1.277 and 1.291

version 1.277, 2026/09/26 19:06:55 version 1.291, 2026/10/23 18:47:40
Line 12 Line 12
   
 #include "pa_pool.h"  #include "pa_pool.h"
 #include "pa_hash.h"  #include "pa_hash.h"
   #include "pa_file.h"
 #include "pa_wcontext.h"  #include "pa_wcontext.h"
 #include "pa_value.h"  #include "pa_value.h"
 #include "pa_vhash.h"  #include "pa_vhash.h"
   #include "pa_vresponse.h"
 #include "pa_stack.h"  #include "pa_stack.h"
 #include "pa_request_info.h"  #include "pa_request_info.h"
 #include "pa_request_charsets.h"  #include "pa_request_charsets.h"
Line 36  const size_t pseudo_file_no__process=1; Line 38  const size_t pseudo_file_no__process=1;
   
 // forwards  // forwards
   
 class Temp_lang;  
 class Methoded;  class Methoded;
 class VMethodFrame;  class VMethodFrame;
 class VMail;  class VMail;
 class VForm;  class VForm;
 class VResponse;  
 class VCookie;  class VCookie;
 class VStateless_class;  class VStateless_class;
 class VConsole;  class VConsole;
   class WebSocket;
 class VException;  class VException;
   
 extern int pa_loop_limit;  extern int pa_loop_limit;
Line 52  extern int pa_array_limit; Line 53  extern int pa_array_limit;
 extern int pa_execute_recursion_limit;  extern int pa_execute_recursion_limit;
 extern int pa_httpd_timeout;  extern int pa_httpd_timeout;
 extern size_t pa_file_size_limit;  extern size_t pa_file_size_limit;
   extern size_t pa_post_max_size;
   
   class Code_cache;
   
 /// Main workhorse.  /// Main workhorse.
 class Request: public PA_Object {  class Request: public PA_Object {
         friend class Temp_lang;  
         friend class Temp_connection;          friend class Temp_connection;
         friend class Temp_request_self;          friend class Temp_request_self;
         friend class Temp_value_element;          friend class Temp_value_element;
Line 63  class Request: public PA_Object { Line 66  class Request: public PA_Object {
         friend class Request_context_saver;          friend class Request_context_saver;
         friend class Exception_trace;          friend class Exception_trace;
         friend class VException;          friend class VException;
           friend class Code_cache_manager;
   
 public:  public:
         class Trace {          class Trace {
Line 166  public: Line 170  public:
         VMethodFrame* method_frame;          VMethodFrame* method_frame;
         Value* rcontext;          Value* rcontext;
         WContext* wcontext;          WContext* wcontext;
         /// current language  
         String::Language flang;  
         /// current connection          /// current connection
         SQL_Connection* fconnection;          SQL_Connection* fconnection;
         //@}          //@}
Line 210  public: Line 212  public:
                 core request processing                  core request processing
                 BEWARE: may throw exception to you: catch it!                  BEWARE: may throw exception to you: catch it!
         */          */
         void core(const char* config_filespec, bool header_only, const String& amain_method_name = main_method_name, const String* amain_class_name = NULL);          void core(const char* config_filespec, const String& amain_method_name = main_method_name, const String* amain_class_name = NULL);
   
           /// ^response:stream[part]: the headers go with the first part
           void stream(Value& part);
   
           /// sends headers and sets response.started
           void start(VResponse::Started mode);
   
         /// executes ops          /// executes ops
         void execute(ArrayOperation& ops); // execute.C          void execute(ArrayOperation& ops); // execute.C
Line 266  public: Line 274  public:
         /// for @USE only, calls ^use (which may be user-defined)          /// for @USE only, calls ^use (which may be user-defined)
         void use_file(const String& file_name, const String* use_filespec, Operation::Origin origin);          void use_file(const String& file_name, const String* use_filespec, Operation::Origin origin);
   
         /// compiles a @a source buffer          /// compiles a @a source buffer, recording it into @a code if given, or replays the cached @a code
         void use_buf(VStateless_class& aclass, const char* source, const String* main_alias, uint file_no, int line_no_offset=0);          void use_buf(VStateless_class& aclass, const char* source, const String* main_alias, uint file_no, int line_no_offset=0, Code_cache* code=0);
   
         /// processes any code-junction there may be inside of @a value          /// processes any code-junction there may be inside of @a value
         Value& process_getter(Junction& junction); // execute.C          Value& process_getter(Junction& junction); // execute.C
Line 302  public: Line 310  public:
         /// returns relative to @a path  path to @a file           /// returns relative to @a path  path to @a file 
         const String& relative(const char* apath, const String& relative_name);          const String& relative(const char* apath, const String& relative_name);
   
         const String& full_disk_path(const String& relative_name);          /// '/'-normalized disk path of a file name; a uri of another scheme is returned as is if allowed, otherwise throws
           const String& full_disk_path(const String& relative_name, uint allowed=0);
           /// '/'-normalized full_disk_path of a real file on disk, which does not throw: 0 for a uri or a remote, invalid or tainted file:// one
           const String* real_disk_path(const String& name);
   
         /// returns the mime type of 'user_file_name'          /// returns the mime type of 'user_file_name'
         const String& mime_type_of(const String* file_name);          const String& mime_type_of(const String* file_name);
Line 349  public: Line 360  public:
         VCookie& cookie;          VCookie& cookie;
         /// $console          /// $console
         VConsole& console;          VConsole& console;
           /// inited in httpd mode
           WebSocket* websocket;
   
         /// classes configured data          /// classes configured data
         HashString<void*> classes_conf;          HashString<void*> classes_conf;
Line 395  private: Line 408  private:
   
 private: // compile.C  private: // compile.C
   
         ArrayClass& compile(VStateless_class* aclass, const char* source, const String* main_alias, uint file_no, int line_no_offset);          ArrayClass& compile(VStateless_class* aclass, const char* source, const String* main_alias, uint file_no, int line_no_offset, Code_cache* code);
   
 private: // execute.C  private: // execute.C
   
Line 404  private: // execute.C Line 417  private: // execute.C
         Value& get_element4call(Value& ncontext, const String& name);          Value& get_element4call(Value& ncontext, const String& name);
 #endif  #endif
   
 private: // defaults  
   
         const String::Language fdefault_lang;  
   
 private: // mime types  private: // mime types
   
         /// $MAIN:MIME-TYPES          /// $MAIN:MIME-TYPES (table or @GET_MIME-TYPES[] property), built at the first use
         Table *mime_types;          Table *mime_types;
   
 private: // connection manipulation  private: // connection manipulation
Line 461  class Request_context_saver { Line 470  class Request_context_saver {
         VMethodFrame* method_frame;          VMethodFrame* method_frame;
         Value* rcontext;          Value* rcontext;
         WContext* wcontext;          WContext* wcontext;
         /// current language  
         String::Language flang;   
         /// current connection          /// current connection
         SQL_Connection* fconnection;          SQL_Connection* fconnection;
   
Line 474  public: Line 481  public:
                 method_frame(ar.method_frame),                  method_frame(ar.method_frame),
                 rcontext(ar.rcontext),                  rcontext(ar.rcontext),
                 wcontext(ar.wcontext),                  wcontext(ar.wcontext),
                 flang(ar.flang),  
                 fconnection(ar.fconnection) {}                  fconnection(ar.fconnection) {}
         void restore() {          void restore() {
                 fr.stack.set_top_index(stack);                  fr.stack.set_top_index(stack);
                 fr.anti_endless_execute_recursion=anti_endless_execute_recursion;                  fr.anti_endless_execute_recursion=anti_endless_execute_recursion;
                 fr.method_frame=method_frame, fr.rcontext=rcontext; fr.wcontext=wcontext;                  fr.method_frame=method_frame, fr.rcontext=rcontext; fr.wcontext=wcontext;
                 fr.flang=flang;  
                 fr.fconnection=fconnection;                  fr.fconnection=fconnection;
         }          }
 };  };

Removed from v.1.277  
changed lines
  Added in v.1.291


E-mail: