Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 #ifndef LOG_ACCESS_HTTP_H
00027 #define LOG_ACCESS_HTTP_H
00028 
00029 #include "Arena.h"
00030 #include "HTTP.h"
00031 #include "LogAccess.h"
00032 
00033 class HttpSM;
00034 class URL;
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 
00043 class LogAccessHttp:public LogAccess
00044 {
00045 public:
00046   LogAccessHttp(HttpSM * sm);
00047   virtual ~ LogAccessHttp();
00048 
00049   void init();
00050   LogEntryType entry_type()
00051   {
00052     return LOG_ENTRY_HTTP;
00053   }
00054 
00055   
00056   
00057   
00058   virtual int marshal_client_host_ip(char *);   
00059   virtual int marshal_client_host_port(char *); 
00060   virtual int marshal_client_auth_user_name(char *);    
00061   virtual int marshal_client_req_text(char *);  
00062   virtual int marshal_client_req_http_method(char *);   
00063   virtual int marshal_client_req_url(char *);   
00064   virtual int marshal_client_req_url_canon(char *);     
00065   virtual int marshal_client_req_unmapped_url_canon(char *);    
00066   virtual int marshal_client_req_unmapped_url_path(char *);     
00067   virtual int marshal_client_req_unmapped_url_host(char *);     
00068   virtual int marshal_client_req_url_path(char *);      
00069   virtual int marshal_client_req_url_scheme(char *);    
00070   virtual int marshal_client_req_http_version(char *);  
00071   virtual int marshal_client_req_header_len(char *);    
00072   virtual int marshal_client_req_body_len(char *);      
00073   virtual int marshal_client_finish_status_code(char *);        
00074 
00075   
00076   
00077   
00078   virtual int marshal_proxy_resp_content_type(char *);  
00079   virtual int marshal_proxy_resp_squid_len(char *);     
00080   virtual int marshal_proxy_resp_content_len(char *);   
00081   virtual int marshal_proxy_resp_status_code(char *);   
00082   virtual int marshal_proxy_resp_header_len(char *);    
00083   virtual int marshal_proxy_finish_status_code(char *); 
00084   virtual int marshal_cache_result_code(char *);        
00085 
00086   
00087   
00088   
00089   virtual int marshal_proxy_req_header_len(char *);     
00090   virtual int marshal_proxy_req_body_len(char *);       
00091   virtual int marshal_proxy_req_server_name(char *);    
00092   virtual int marshal_proxy_req_server_ip(char *);      
00093   virtual int marshal_proxy_hierarchy_route(char *);    
00094 
00095   
00096   
00097   
00098   virtual int marshal_server_host_ip(char *);   
00099   virtual int marshal_server_host_name(char *); 
00100   virtual int marshal_server_resp_status_code(char *);  
00101   virtual int marshal_server_resp_content_len(char *);  
00102   virtual int marshal_server_resp_header_len(char *);   
00103   virtual int marshal_server_resp_http_version(char *); 
00104 
00105   
00106   
00107   
00108   virtual int marshal_cache_resp_status_code(char *);  
00109   virtual int marshal_cache_resp_content_len(char *);  
00110   virtual int marshal_cache_resp_header_len(char *);   
00111   virtual int marshal_cache_resp_http_version(char *); 
00112 
00113   
00114   
00115   
00116   virtual int marshal_client_retry_after_time(char *);  
00117 
00118   
00119   
00120   
00121   virtual int marshal_cache_write_code(char *); 
00122   virtual int marshal_cache_write_transform_code(char *);       
00123 
00124   
00125   
00126   
00127   virtual int marshal_transfer_time_ms(char *); 
00128   virtual int marshal_transfer_time_s(char *);  
00129   virtual int marshal_file_size(char *); 
00130   virtual int marshal_plugin_identity_id(char *);    
00131   virtual int marshal_plugin_identity_tag(char *);    
00132 
00133   
00134   
00135   
00136   virtual int marshal_http_header_field(LogField::Container container, char *field, char *buf);
00137   virtual int marshal_http_header_field_escapify(LogField::Container container, char *field, char *buf);
00138 
00139   virtual void set_client_req_url(char *, int);        
00140   virtual void set_client_req_url_canon(char *, int);  
00141   virtual void set_client_req_unmapped_url_canon(char *, int); 
00142   virtual void set_client_req_unmapped_url_path(char *, int);  
00143   virtual void set_client_req_unmapped_url_host(char *, int);  
00144   virtual void set_client_req_url_path(char *, int);   
00145 
00146 private:
00147   HttpSM * m_http_sm;
00148 
00149   Arena m_arena;
00150   
00151 
00152   HTTPHdr *m_client_request;
00153   HTTPHdr *m_proxy_response;
00154   HTTPHdr *m_proxy_request;
00155   HTTPHdr *m_server_response;
00156   HTTPHdr *m_cache_response;
00157 
00158   char *m_client_req_url_str;
00159   int m_client_req_url_len;
00160   char *m_client_req_url_canon_str;
00161   int m_client_req_url_canon_len;
00162   char *m_client_req_unmapped_url_canon_str;
00163   int m_client_req_unmapped_url_canon_len;
00164   char *m_client_req_unmapped_url_path_str;
00165   int m_client_req_unmapped_url_path_len;
00166   char *m_client_req_unmapped_url_host_str;
00167   int m_client_req_unmapped_url_host_len;
00168   char const*m_client_req_url_path_str;
00169   int m_client_req_url_path_len;
00170   char *m_proxy_resp_content_type_str;
00171   int m_proxy_resp_content_type_len;
00172 
00173   void validate_unmapped_url(void);
00174   void validate_unmapped_url_path(void);
00175 
00176   
00177   LogAccessHttp(const LogAccessHttp & rhs);
00178   LogAccessHttp & operator=(LogAccessHttp & rhs);
00179 };
00180 
00181 #endif