--- parser3/src/include/pa_request.h 2001/11/08 11:52:34 1.110 +++ parser3/src/include/pa_request.h 2001/12/14 12:53:47 1.113 @@ -4,7 +4,7 @@ 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.113 2001/12/14 12:53:47 paf Exp $ */ #ifndef PA_REQUEST_H @@ -26,6 +26,11 @@ #include "pa_vresponse.h" #include "pa_vcookie.h" #include "pa_sql_driver_manager.h" +#include "pa_transcoder.h" + +#ifdef RESOURCES_DEBUG +#include +#endif #ifndef NO_STRING_ORIGIN # define COMPILE_PARAMS \ @@ -52,6 +57,12 @@ 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 +79,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 +121,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 +142,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,7 +159,10 @@ public: /// returns the mime type of 'user_file_name_cstr' const String& mime_type_of(const char *user_file_name_cstr); - /// PCRE character tables + /// transcoder [pcre_tables + byte->unicode & back] + const Transcoder* transcoder(); + + /// pcre_tables [up/low case & co] const unsigned char *pcre_tables(); public: @@ -203,7 +219,7 @@ private: // core data */ uint anti_endless_execute_recoursion; - /// charset->pcre_tables + /// charset->transcoder Hash CTYPE; /// stack trace @@ -226,11 +242,11 @@ private: // execute.C 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 +256,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 +273,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)) { }