--- parser3/src/include/pa_request.h 2001/11/08 11:52:34 1.110 +++ parser3/src/include/pa_request.h 2001/12/21 12:47:56 1.116 @@ -4,13 +4,12 @@ Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) Author: Alexander Petrosyan (http://paf.design.ru) - $Id: pa_request.h,v 1.110 2001/11/08 11:52:34 paf Exp $ + $Id: pa_request.h,v 1.116 2001/12/21 12:47:56 paf Exp $ */ #ifndef PA_REQUEST_H #define PA_REQUEST_H -#include "pa_config_includes.h" #include "pa_pool.h" #include "pa_hash.h" #include "pa_wcontext.h" @@ -27,6 +26,10 @@ #include "pa_vcookie.h" #include "pa_sql_driver_manager.h" +#ifdef RESOURCES_DEBUG +#include +#endif + #ifndef NO_STRING_ORIGIN # define COMPILE_PARAMS \ const char *source, \ @@ -46,12 +49,19 @@ class Temp_lang; class Methoded; +class VMethodFrame; /// Main workhorse. class Request : public Pooled { friend class Temp_lang; public: +#ifdef RESOURCES_DEBUG + /// measures + double sql_connect_time; + double sql_request_time; +#endif + /// some information from web server class Info { public: @@ -68,7 +78,7 @@ public: Request(Pool& apool, Info& ainfo, - String::Untaint_lang adefault_lang, ///< all tainted data default untainting lang + uchar adefault_lang, ///< all tainted data default untainting lang bool status_allowed ///< status class allowed ); ~Request() {} @@ -110,7 +120,8 @@ public: /// appending, sure of clean string inside void write_no_lang(const String& astring) { - wcontext->write(astring, String::UL_CLEAN); + wcontext->write(astring, + String::UL_CLEAN | flang&String::UL_OPTIMIZE_BIT); } /// appending string, passing language built into string being written void write_pass_lang(const String& astring) { @@ -130,7 +141,8 @@ public: } /// appending sure value, that would be converted to clean string void write_no_lang(Value& avalue) { - wcontext->write(avalue, String::UL_CLEAN); + wcontext->write(avalue, + String::UL_CLEAN | flang&String::UL_OPTIMIZE_BIT); } /// appending sure value, not VString void write_expr_result(Value& avalue) { @@ -146,9 +158,6 @@ public: /// returns the mime type of 'user_file_name_cstr' const String& mime_type_of(const char *user_file_name_cstr); - /// PCRE character tables - const unsigned char *pcre_tables(); - public: /// info from web server @@ -203,9 +212,6 @@ private: // core data */ uint anti_endless_execute_recoursion; - /// charset->pcre_tables - Hash CTYPE; - /// stack trace Stack trace; @@ -215,22 +221,23 @@ private: // compile.C private: // execute.C - const String *execute_method(Value& aself, - const Method& method, bool return_cstr=true); - const String *execute_virtual_method(Value& aself, - const String& method_name, bool return_cstr=true); + const String *execute_method(Value& aself, const Method& method, + bool return_cstr); + const String& execute_method(VMethodFrame& amethodFrame, const Method& method); + const String *execute_virtual_method(Value& aself, const String& method_name); const String *execute_nonvirtual_method(VStateless_class& aclass, - const String& method_name, bool return_cstr=true); + const String& method_name, + bool return_cstr); Value *get_element(); private: // lang&raw - String::Untaint_lang flang; + uchar flang; private: // defaults - const String::Untaint_lang fdefault_lang; + const uchar fdefault_lang; Value *default_content_type; private: // mime types @@ -240,12 +247,12 @@ private: // mime types private: // lang manipulation - String::Untaint_lang set_lang(String::Untaint_lang alang) { - String::Untaint_lang result=flang; + uchar set_lang(uchar alang) { + uchar result=flang; flang=alang; return result; } - void restore_lang(String::Untaint_lang alang) { + void restore_lang(uchar alang) { flang=alang; } @@ -257,9 +264,9 @@ private: /// Auto-object used for temporary changing Request::flang. class Temp_lang { Request& frequest; - String::Untaint_lang saved_lang; + uchar saved_lang; public: - Temp_lang(Request& arequest, String::Untaint_lang alang) : + Temp_lang(Request& arequest, uchar alang) : frequest(arequest), saved_lang(arequest.set_lang(alang)) { }