Page Speed Optimization Libraries  1.2.24.1
net/instaweb/util/public/pthread_shared_mem.h
Go to the documentation of this file.
00001 // Copyright 2011 Google Inc.
00016 
00017 #ifndef NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_SHARED_MEM_H_
00018 #define NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_SHARED_MEM_H_
00019 
00020 #include <cstddef>
00021 #include <map>
00022 
00023 #include "net/instaweb/util/public/abstract_shared_mem.h"
00024 #include "net/instaweb/util/public/basictypes.h"
00025 #include "net/instaweb/util/public/string.h"
00026 
00027 namespace net_instaweb {
00028 class MessageHandler;
00029 
00037 class PthreadSharedMem : public AbstractSharedMem {
00038  public:
00039   PthreadSharedMem();
00040   virtual ~PthreadSharedMem();
00041 
00042   virtual size_t SharedMutexSize() const;
00043 
00044   virtual AbstractSharedMemSegment* CreateSegment(
00045       const GoogleString& name, size_t size, MessageHandler* handler);
00046 
00047   virtual AbstractSharedMemSegment* AttachToSegment(
00048       const GoogleString& name, size_t size, MessageHandler* handler);
00049 
00050   virtual void DestroySegment(const GoogleString& name,
00051                               MessageHandler* handler);
00052 
00053  private:
00054   typedef std::map<GoogleString, char*> SegmentBaseMap;
00055 
00057   static SegmentBaseMap* AcquireSegmentBases();
00058 
00059   static void UnlockSegmentBases();
00060 
00064   static SegmentBaseMap* segment_bases_;
00065 
00066   DISALLOW_COPY_AND_ASSIGN(PthreadSharedMem);
00067 };
00068 
00069 }  
00070 
00071 #endif  ///< NET_INSTAWEB_UTIL_PUBLIC_PTHREAD_SHARED_MEM_H_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines