Page Speed Optimization Libraries  1.3.25.1
net/instaweb/util/public/abstract_shared_mem.h
Go to the documentation of this file.
00001 // Copyright 2011 Google Inc.
00016 
00017 #ifndef NET_INSTAWEB_UTIL_PUBLIC_ABSTRACT_SHARED_MEM_H_
00018 #define NET_INSTAWEB_UTIL_PUBLIC_ABSTRACT_SHARED_MEM_H_
00019 
00020 #include <cstddef>
00021 #include "net/instaweb/util/public/abstract_mutex.h"
00022 #include "net/instaweb/util/public/basictypes.h"
00023 #include "net/instaweb/util/public/string.h"
00024 
00025 namespace net_instaweb {
00026 
00027 class MessageHandler;
00028 
00031 class AbstractSharedMemSegment {
00032  public:
00033   AbstractSharedMemSegment() {}
00034 
00037   virtual ~AbstractSharedMemSegment();
00038 
00042   virtual volatile char* Base() = 0;
00043 
00046   virtual size_t SharedMutexSize() const = 0;
00047 
00057   virtual bool InitializeSharedMutex(size_t offset,
00058                                      MessageHandler* handler) = 0;
00059   virtual AbstractMutex* AttachToSharedMutex(size_t offset) = 0;
00060 
00061  private:
00062   DISALLOW_COPY_AND_ASSIGN(AbstractSharedMemSegment);
00063 };
00064 
00087 class AbstractSharedMem {
00088  public:
00089   AbstractSharedMem() {}
00090   virtual ~AbstractSharedMem();
00091 
00093   virtual size_t SharedMutexSize() const = 0;
00094 
00101   virtual AbstractSharedMemSegment* CreateSegment(
00102       const GoogleString& name, size_t size, MessageHandler* handler) = 0;
00103 
00106   virtual AbstractSharedMemSegment* AttachToSegment(
00107       const GoogleString& name, size_t size, MessageHandler* handler) = 0;
00108 
00111   virtual void DestroySegment(const GoogleString& name,
00112                               MessageHandler* handler) = 0;
00113 
00114  private:
00115   DISALLOW_COPY_AND_ASSIGN(AbstractSharedMem);
00116 };
00117 
00118 }  
00119 
00120 #endif  ///< NET_INSTAWEB_UTIL_PUBLIC_ABSTRACT_SHARED_MEM_H_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines