• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

LogAccessHttp.h

Go to the documentation of this file.
00001 /** @file
00002 
00003   A brief file description
00004 
00005   @section license License
00006 
00007   Licensed to the Apache Software Foundation (ASF) under one
00008   or more contributor license agreements.  See the NOTICE file
00009   distributed with this work for additional information
00010   regarding copyright ownership.  The ASF licenses this file
00011   to you under the Apache License, Version 2.0 (the
00012   "License"); you may not use this file except in compliance
00013   with the License.  You may obtain a copy of the License at
00014 
00015       http://www.apache.org/licenses/LICENSE-2.0
00016 
00017   Unless required by applicable law or agreed to in writing, software
00018   distributed under the License is distributed on an "AS IS" BASIS,
00019   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00020   See the License for the specific language governing permissions and
00021   limitations under the License.
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   LogAccessHttp
00038 
00039   This class extends the logging system interface as implemented by the
00040   HttpStateMachineGet class.
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   // client -> proxy fields
00057   //
00058   virtual int marshal_client_host_ip(char *);   // STR
00059   virtual int marshal_client_host_port(char *); // INT
00060   virtual int marshal_client_auth_user_name(char *);    // STR
00061   virtual int marshal_client_req_text(char *);  // STR
00062   virtual int marshal_client_req_http_method(char *);   // INT
00063   virtual int marshal_client_req_url(char *);   // STR
00064   virtual int marshal_client_req_url_canon(char *);     // STR
00065   virtual int marshal_client_req_unmapped_url_canon(char *);    // STR
00066   virtual int marshal_client_req_unmapped_url_path(char *);     // STR
00067   virtual int marshal_client_req_unmapped_url_host(char *);     // STR
00068   virtual int marshal_client_req_url_path(char *);      // STR
00069   virtual int marshal_client_req_url_scheme(char *);    // STR
00070   virtual int marshal_client_req_http_version(char *);  // INT
00071   virtual int marshal_client_req_header_len(char *);    // INT
00072   virtual int marshal_client_req_body_len(char *);      // INT
00073   virtual int marshal_client_finish_status_code(char *);        // INT
00074 
00075   //
00076   // proxy -> client fields
00077   //
00078   virtual int marshal_proxy_resp_content_type(char *);  // STR
00079   virtual int marshal_proxy_resp_squid_len(char *);     // INT
00080   virtual int marshal_proxy_resp_content_len(char *);   // INT
00081   virtual int marshal_proxy_resp_status_code(char *);   // INT
00082   virtual int marshal_proxy_resp_header_len(char *);    // INT
00083   virtual int marshal_proxy_finish_status_code(char *); // INT
00084   virtual int marshal_cache_result_code(char *);        // INT
00085 
00086   //
00087   // proxy -> server fields
00088   //
00089   virtual int marshal_proxy_req_header_len(char *);     // INT
00090   virtual int marshal_proxy_req_body_len(char *);       // INT
00091   virtual int marshal_proxy_req_server_name(char *);    // STR
00092   virtual int marshal_proxy_req_server_ip(char *);      // INT
00093   virtual int marshal_proxy_hierarchy_route(char *);    // INT
00094 
00095   //
00096   // server -> proxy fields
00097   //
00098   virtual int marshal_server_host_ip(char *);   // INT
00099   virtual int marshal_server_host_name(char *); // STR
00100   virtual int marshal_server_resp_status_code(char *);  // INT
00101   virtual int marshal_server_resp_content_len(char *);  // INT
00102   virtual int marshal_server_resp_header_len(char *);   // INT
00103   virtual int marshal_server_resp_http_version(char *); // INT
00104 
00105   //
00106   // cache -> client fields
00107   //
00108   virtual int marshal_cache_resp_status_code(char *);  // INT
00109   virtual int marshal_cache_resp_content_len(char *);  // INT
00110   virtual int marshal_cache_resp_header_len(char *);   // INT
00111   virtual int marshal_cache_resp_http_version(char *); // INT
00112 
00113   //
00114   // congestion control client_retry_after_time
00115   //
00116   virtual int marshal_client_retry_after_time(char *);  // INT
00117 
00118   //
00119   // cache write fields
00120   //
00121   virtual int marshal_cache_write_code(char *); // INT
00122   virtual int marshal_cache_write_transform_code(char *);       // INT
00123 
00124   //
00125   // other fields
00126   //
00127   virtual int marshal_transfer_time_ms(char *); // INT
00128   virtual int marshal_transfer_time_s(char *);  // INT
00129   virtual int marshal_file_size(char *); // INT
00130   virtual int marshal_plugin_identity_id(char *);    // INT
00131   virtual int marshal_plugin_identity_tag(char *);    // STR
00132 
00133   //
00134   // named fields from within a http header
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);        // STR
00140   virtual void set_client_req_url_canon(char *, int);  // STR
00141   virtual void set_client_req_unmapped_url_canon(char *, int); // STR
00142   virtual void set_client_req_unmapped_url_path(char *, int);  // STR
00143   virtual void set_client_req_unmapped_url_host(char *, int);  // STR
00144   virtual void set_client_req_url_path(char *, int);   // STR
00145 
00146 private:
00147   HttpSM * m_http_sm;
00148 
00149   Arena m_arena;
00150   //  URL *m_url;
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   // -- member functions that are not allowed --
00177   LogAccessHttp(const LogAccessHttp & rhs);
00178   LogAccessHttp & operator=(LogAccessHttp & rhs);
00179 };
00180 
00181 #endif

Generated by  doxygen 1.7.1