1 #ifndef CARMA_DBMS_SYSLOGMMAPFILE_H
2 #define CARMA_DBMS_SYSLOGMMAPFILE_H
8 #include "carma/dbms/SyslogMessage.h"
12 #include "log4cpp/Category.hh"
41 SyslogMMAPFile(
const std::string& mmapFileName,
bool writer =
false );
46 int getSize() {
return mmapSize_; };
47 void *getPtr() {
return mmapPtr_; };
49 std::string computeVersionHash();
50 long long computeStateID(
const char *);
51 long long getMapStateID();
52 void setMapStateID(
long long val ) { *currentState_id_ = val; };
54 bool isConsistent() {
return ( myStateID_ == *currentState_id_ ); };
56 static const size_t MMAP_SIZE = 50000300;
57 static const size_t VERSIONID_SIZE = 100;
58 static const size_t SYSLOGMEDIAN_SIZE = 165;
59 static const long MAX_MESSAGES = 300000;
60 static const char *MYID;
62 std::string toString();
63 std::string toVerboseString();
64 std::string getMyID();
65 std::string getVersionHash();
66 size_t getHeaderSize();
68 size_t getVersionIDSize();
69 size_t getSyslogMedianSize();
71 void atomicUpdate( SyslogMessage *aSyslogMessage );
74 long getPosLoc(
long pos );
76 long getNearestAgedPos(
double mjd );
77 double peekMJD(
long pos );
79 long getNumMessages();
81 SyslogMessage *getCurrentMessage();
82 SyslogMessage *getLastMessage();
83 SyslogMessage *getMessageAt(
long pos );
84 SyslogMessage *getMessageAtAndUpdateNext(
long &pos );
87 std::string mmapFileName_;
91 log4cpp::Category &log_;
93 unsigned char *mmapPtr_;
94 unsigned char *hashPtr_;
95 unsigned char *IDPtr_;
96 size_t *headerPtrStart_;
97 size_t *headerPtrEnd_;
98 size_t *headerCurrent_;
100 size_t *versionID_size_;
101 size_t *syslogMedian_size_;
102 size_t *lastBytePos_;
103 long long *currentState_id_;
104 long long myStateID_;
106 std::string versionHash_;
107 long *currentAtomicPos_;
109 unsigned char *ringBufferStart_;
110 unsigned char *ringBufferEnd_;
112 static carma::util::SemaphoreOperator *semOp_;
115 static ::std::string *SEM_NAME;
116 static unsigned short num_;
121 #endif // CARMA_DBMS_SYSLOGMMAPFILE_H
Helper class for semaphore operations.
~SyslogMMAPFile()
The destructor.
This class is responsible for opening/closing the syslog mmap file.
SyslogMMAPFile(const std::string &mmapFileName, bool writer=false)
Constructor.