X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5dd5f9ec28f304ca377c42fd7f711d6cf12b90e1..5c19dc3ae3bd8e40a9c028b0deddd50ff337692c:/OSX/libsecurityd/lib/SharedMemoryClient.h?ds=sidebyside diff --git a/OSX/libsecurityd/lib/SharedMemoryClient.h b/OSX/libsecurityd/lib/SharedMemoryClient.h new file mode 100644 index 00000000..b24b73bf --- /dev/null +++ b/OSX/libsecurityd/lib/SharedMemoryClient.h @@ -0,0 +1,46 @@ +#ifndef __SHAREDMEMORYCLIENT__ +#define __SHAREDMEMORYCLIENT__ + + + +#include +#include +#include +#include + +namespace Security +{ + +enum UnavailableReason {kURNone, kURMessageDropped, kURMessagePending, kURNoMessage, kURBufferCorrupt}; + +class SharedMemoryClient +{ +protected: + std::string mSegmentName; + size_t mSegmentSize; + Mutex mMutex; + + u_int8_t* mSegment; + u_int8_t* mDataArea; + u_int8_t* mDataPtr; + u_int8_t* mDataMax; + + SegmentOffsetType GetProducerCount (); + + void ReadData (void* buffer, SegmentOffsetType bytesToRead); + SegmentOffsetType ReadOffset (); + +public: + SharedMemoryClient (const char* segmentName, SegmentOffsetType segmentSize); + virtual ~SharedMemoryClient (); + + bool ReadMessage (void* message, SegmentOffsetType &length, UnavailableReason &ur); + + const char* GetSegmentName (); + size_t GetSegmentSize (); +}; + +}; + + +#endif