gatelib  2.1
g_io_SharedMem.h
1 #pragma once
2 
3 #include "g_common.h"
4 #include <string>
5 
6 namespace g
7 {
8 namespace io
9 {
10  G_EXC_DEFINE_MSG ( SharedMemOpenFailedException , g::Exception , "Shared mem object doesn't exist!" );
11 
12  enum SharedMemFlags_t
13  {
14  sh_read_only = 0x0 ,
15  sh_read_write = 0x1 ,
16  sh_create_always = 0x2 ,
17  sh_read_only_create_always = sh_read_only | sh_create_always ,
18  sh_read_write_create_always = sh_read_write | sh_create_always
19  };
20 
21  class G_LIB_ITEM SharedMem
22  {
23  G_COPY_CONSTRUCTOR_PROHIBITED ( SharedMem );
24  public:
25  //server mem is created always
26  SharedMem ( const char* aShareMemName , size_t aSize , SharedMemFlags_t aFlags = sh_read_write_create_always );
27  virtual ~SharedMem();
28 
29  void* theAddress ( ) { return mAddress; }
30  size_t getSize ( ) const { return mSize; }
31 
32  private:
33 #if G_AUTOPTION_ON_WINDOWS
34  void* mMappingHandle;
35 #else
36  int mMappingFid;
37 #endif
38  void* mAddress;
39  std::string mShareName;
40  size_t mSize;
41  };
42 
43 }//namespace io
44 }//namespace g
#define G_EXC_DEFINE_MSG(aexctypename, abaseexctypename, amsg)
Definition: g_exception_macros.h:43
Definition: g.mthread.ThreadSimpleEvent.h:5
Anchestor Exception class for g::lib.
Definition: g_Exception.h:17
Definition: g_io_SharedMem.h:21