00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef NL_SHARED_MEMORY_H
00027 #define NL_SHARED_MEMORY_H
00028
00029 #include "nel/misc/types_nl.h"
00030
00031 #ifdef NL_OS_WINDOWS
00032 #include <map>
00033 #endif
00034
00035 namespace NLMISC {
00036
00037
00038 #ifdef NL_OS_WINDOWS
00039 typedef const char *TSharedMemId;
00040 #else
00041 typedef key_t TSharedMemId;
00042 #endif
00043
00044
00045
00046
00047
00048
00049 #ifdef NL_OS_WINDOWS
00050 #define toSharedMemId( id ) toString( "%d", id ).c_str()
00051 #define NL_SMID "s"
00052 #else
00053 #define toSharedMemId( id ) (id)
00054 #define NL_SMID "d"
00055 #endif
00056
00057
00068 class CSharedMemory
00069 {
00070 public:
00071
00072
00073
00074
00079 static void * createSharedMemory( TSharedMemId sharedMemId, uint32 size );
00080
00084 static void * accessSharedMemory( TSharedMemId sharedMemId );
00085
00090 static bool closeSharedMemory( void * accessAddress );
00091
00102 static void destroySharedMemory( TSharedMemId sharedMemId, bool force=false );
00103 };
00104
00105
00106 }
00107
00108
00109 #endif // NL_SHARED_MEMORY_H
00110
00111