SharedMemoryClient.h [plain text]
#ifndef __SHAREDMEMORYCLIENT__
#define __SHAREDMEMORYCLIENT__
#include <string>
#include <stdlib.h>
#include <securityd_client/SharedMemoryCommon.h>
#include <security_utilities/threading.h>
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