Page Speed Optimization Libraries
1.4.26.1
|
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_