LRAUV  revA
DirectoryEntry.h
Go to the documentation of this file.
1 
10 #ifndef DIRECTORYENTRY_H_
11 #define DIRECTORYENTRY_H_
12 
13 #include "LogEntry.h"
14 
15 #include "component/FailureMode.h"
16 #include "data/DataElement.h"
17 #include "data/Slate.h"
18 
19 class RingBufferVoid;
20 
42 class DirectoryEntry : public LogEntry
43 {
44 public:
45 
47  typedef enum
48  {
49  ACCESSOR = 'a',
50  ELEMENT = 'e',
51  NAME = 'n',
52  VERSION = 'v',
53 
54  } DirectoryType;
55  static const int DIRECTORY_TYPE_MASK = 7 << 2;
56 
57  static unsigned short GetCurrentLogVersion()
58  {
59  return CurrentLogVersion_;
60  }
61 
62  static unsigned short GetMinimumLogVersion()
63  {
64  return MinimumLogVersion_;
65  }
66 
68  DirectoryEntry( const short version = 0 );
69 
71  DirectoryEntry( DataAccess* dataAccess );
72 
74  DirectoryEntry( const CodedStr* name );
75 
77  DirectoryEntry( ElementURI* elementURI );
78 
80  virtual ~DirectoryEntry();
81 
83  void* operator new( size_t size );
84 
86  void operator delete( void* p );
87 
93  static DirectoryEntry* Read( Timestamp& timeBase, InStream &inStream, unsigned short firstWord, Logger& logger );
94 
100  virtual unsigned int write( Timestamp& timeBase, OutStream& logStream ) const;
101 
102  virtual Str toString( const Unit* unit = NULL ) const;
103 
105  static const char* DirectoryTypeToString( DirectoryType directoryType );
106 
108  {
109  return directoryType_;
110  }
111 
112 protected:
113 
114  static unsigned short MinimumLogVersion_;
115 
116  static unsigned short CurrentLogVersion_;
117 
119 
120  union
121  {
122  unsigned short version_;
125  const CodedStr* name_;
126  };
127 
129  bool wasRead_;
130 
133 
136  {
137  public:
139  };
140 
143 
146 };
147 
148 #endif /*DIRECTORYENTRY_H_*/
Client-side interface for injecting log data into the log queue.
Definition: Logger.h:30
virtual ~DirectoryEntry()
Destructor.
Definition: DirectoryEntry.cpp:61
Serializable representation of DataAccessor object.
Definition: DataAccess.h:30
bool wasRead_
Indicates whether the value was read in, and therefore can be deleted.
Definition: DirectoryEntry.h:129
static DirectoryEntry * Read(Timestamp &timeBase, InStream &inStream, unsigned short firstWord, Logger &logger)
Read new DirectoryEntry from a stream.
Definition: DirectoryEntry.cpp:93
Code unit that represents an event to be stored in the log file.
Definition: DirectoryEntry.h:42
static RingBufferVoid * MallocRing_
Declared as a pointer to avoid including RingBuffer.h header here.
Definition: DirectoryEntry.h:132
static unsigned short CurrentLogVersion_
Definition: DirectoryEntry.h:116
static unsigned short GetCurrentLogVersion()
Definition: DirectoryEntry.h:57
DirectoryType getDirectoryType(void) const
Definition: DirectoryEntry.h:107
virtual Str toString(const Unit *unit=NULL) const
Convert payload to Str.
Definition: DirectoryEntry.cpp:232
~StaticDestructor()
Definition: DirectoryEntry.cpp:25
Defines an ElementUri. Appears as "
Definition: DirectoryEntry.h:51
Defines an Name. Appears as "
Definition: DirectoryEntry.h:52
virtual unsigned int write(Timestamp &timeBase, OutStream &logStream) const
Send payload to a stream.
Definition: DirectoryEntry.cpp:200
unsigned short version_
Definition: DirectoryEntry.h:122
This is a very abstract class that can be implemented by classes that want to receive stream input...
Definition: InStream.h:29
One "entry" in a LogQueue.
Definition: LogEntry.h:33
Contains the DataElement class definition.
Extends the Str class, adding an unsigned short code (actually, the codes are limited to 14 bits...
Definition: CodedStr.h:23
static const int DIRECTORY_TYPE_MASK
Definition: DirectoryEntry.h:55
DataAccess * dataAccess_
Definition: DirectoryEntry.h:123
Contains the LogEntry class definition.
static unsigned short GetMinimumLogVersion()
Definition: DirectoryEntry.h:62
DirectoryEntry(const short version=0)
Version Construnctor.
Definition: DirectoryEntry.cpp:33
Replacement for standard template class string.
Definition: Str.h:12
DirectoryType directoryType_
Definition: DirectoryEntry.h:118
Defines an Accessor. Appears as "
Definition: DirectoryEntry.h:50
ElementURI * elementURI_
Definition: DirectoryEntry.h:124
static unsigned short MinimumLogVersion_
Definition: DirectoryEntry.h:114
Contains the FailureMode class definition.
Code unit that represents a unique name for a DataElement.
Definition: ElementURI.h:27
This is a very abstract class that can be implemented by classes that want to send stream output...
Definition: OutStream.h:41
static FlexArray< ElementURI * > ElementStore_
Static storage of ElementURIs to delete at cleanup.
Definition: DirectoryEntry.h:145
const CodedStr * name_
Definition: DirectoryEntry.h:125
DirectoryType
Type of directory entry.
Definition: DirectoryEntry.h:47
Makes sure that mallocRing_s is deleted on shutdown.
Definition: DirectoryEntry.h:135
Thread-safe ring buffer for storing void pointers.
Definition: RingBuffer.h:36
static DirectoryEntry::StaticDestructor StaticDestructor_
Static instance of StaticDestructor.
Definition: DirectoryEntry.h:142
Code that represents an engineering unit.
Definition: Unit.h:24
static const char * DirectoryTypeToString(DirectoryType directoryType)
Convert actions to Strs.
Definition: DirectoryEntry.cpp:249
Definition: DirectoryEntry.h:49
Represents absolute times.
Definition: Timestamp.h:31
Contains the Slate class definition.