Page Speed Optimization Libraries  1.7.30.3
net/instaweb/apache/apache_message_handler.h
Go to the documentation of this file.
00001 // Copyright 2010 Google Inc.
00014 
00016 
00017 #ifndef NET_INSTAWEB_APACHE_APACHE_MESSAGE_HANDLER_H_
00018 #define NET_INSTAWEB_APACHE_APACHE_MESSAGE_HANDLER_H_
00019 
00020 #include <cstdarg>
00021 
00022 #include "net/instaweb/util/public/basictypes.h"
00023 #include "net/instaweb/util/public/google_message_handler.h"
00024 #include "net/instaweb/util/public/message_handler.h"
00025 #include "net/instaweb/util/public/scoped_ptr.h"
00026 #include "net/instaweb/util/public/string.h"
00027 #include "net/instaweb/util/public/string_util.h"
00028 
00029 struct server_rec;
00030 
00031 namespace net_instaweb {
00032 
00033 class AbstractMutex;
00034 class SharedCircularBuffer;
00035 class Timer;
00036 class Writer;
00037 
00040 class ApacheMessageHandler : public MessageHandler {
00041  public:
00044   ApacheMessageHandler(const server_rec* server, const StringPiece& version,
00045                        Timer* timer, AbstractMutex* mutex);
00046 
00049   static void InstallCrashHandler(server_rec* global_server);
00050 
00054   void set_buffer(SharedCircularBuffer* buff);
00055   void SetPidString(const int64 pid) {
00056     pid_string_ = StrCat("[", Integer64ToString(pid), "]");
00057   }
00059   bool Dump(Writer* writer);
00060 
00061  protected:
00062   virtual void MessageVImpl(MessageType type, const char* msg, va_list args);
00063 
00064   virtual void FileMessageVImpl(MessageType type, const char* filename,
00065                                 int line, const char* msg, va_list args);
00066 
00067  private:
00068   int GetApacheLogLevel(MessageType type);
00069   GoogleString Format(const char* msg, va_list args);
00070 
00071   const server_rec* server_rec_;
00072   const GoogleString version_;
00075   Timer* timer_;
00076   scoped_ptr<AbstractMutex> mutex_;
00078   GoogleString pid_string_;
00083   GoogleMessageHandler handler_;
00084   SharedCircularBuffer* buffer_;
00085 
00086   DISALLOW_COPY_AND_ASSIGN(ApacheMessageHandler);
00087 };
00088 
00089 }  
00090 
00091 #endif  ///< NET_INSTAWEB_APACHE_APACHE_MESSAGE_HANDLER_H_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines