logog
logger optimized for games
topic.hpp
Go to the documentation of this file.
1 
6 #ifndef __LOGOG_TOPIC_HPP__
7 #define __LOGOG_TOPIC_HPP__
8 
9 namespace logog
10 {
11 
15 class Topic : public Node
16 {
17  friend class TopicLevel;
18  friend class TopicGroup;
19  friend class FilterDefault;
20 
21 public:
25  Topic( const LOGOG_LEVEL_TYPE level = LOGOG_LEVEL_ALL,
26  const LOGOG_CHAR *sFileName = NULL,
27  const int nLineNumber = 0,
28  const LOGOG_CHAR *sGroup = NULL,
29  const LOGOG_CHAR *sCategory = NULL,
30  const LOGOG_CHAR *sMessage = NULL,
31  const double dTimestamp = 0.0f );
32 
34  virtual bool IsTopic() const;
35 
38  virtual int Send( const Topic &node );
39 
41  virtual int Transmit();
42 
47  virtual int Receive( const Topic &node );
48 
65  virtual bool CanSubscribeTo( const Node &otherNode );
66 
67  virtual bool CanSubscribeCheckTopic( const Topic &other );
68 
73  virtual bool PublishTo( Node &subscriber );
74 
75 
76 
80  virtual void Format( const LOGOG_CHAR *cFormatMessage, ... );
81 
82  const LOGOG_STRING &FileName() const;
83  void FileName( const LOGOG_STRING &s );
84 
85  const LOGOG_STRING &Message() const;
86  void Message( const LOGOG_STRING &s );
87 
88  const LOGOG_STRING &Category() const;
89  void Category( const LOGOG_STRING &s );
90 
91  const LOGOG_STRING &Group() const;
92  void Group( const LOGOG_STRING &s );
93 
94  int LineNumber() const;
95  void LineNumber( const int num );
96 
97  LOGOG_LEVEL_TYPE Level() const;
98  void Level( LOGOG_LEVEL_TYPE level );
99 
100  LOGOG_TIME Timestamp() const;
101  void Timestamp( const LOGOG_TIME t );
102 
103  TOPIC_FLAGS GetTopicFlags() const;
104 
105 protected:
119 };
120 
126 class Filter : public Topic
127 {
128 public:
129  Filter( const LOGOG_LEVEL_TYPE level = LOGOG_LEVEL_ALL,
130  const LOGOG_CHAR *sFileName = NULL,
131  const int nLineNumber = 0,
132  const LOGOG_CHAR *sGroup = NULL,
133  const LOGOG_CHAR *sCategory = NULL,
134  const LOGOG_CHAR *sMessage = NULL,
135  const double dTimestamp = 0.0f );
136 };
137 
144 class FilterDefault : public Filter
145 {
146  typedef Filter super;
147 public:
148  FilterDefault(const LOGOG_LEVEL_TYPE level);
149  int Receive(const Topic &node);
150  void Level(LOGOG_LEVEL_TYPE level);
151 };
152 
155 
160 void SetDefaultLevel( LOGOG_LEVEL_TYPE level );
161 
163 class TopicGroup : public Topic
164 {
165 public:
166  TopicGroup( const LOGOG_CHAR *sGroup = NULL );
167 
168  virtual bool CanSubscribeCheckTopic( const Topic &other );
169 };
170 
172 class TopicLevel : public Topic
173 {
174 public:
175  TopicLevel( const LOGOG_LEVEL_TYPE level );
176  virtual bool CanSubscribeCheckTopic( const Topic &other );
177 };
178 
180 class TopicSource : public Topic
181 {
182 public:
184  const LOGOG_CHAR *sFileName = NULL,
185  const int nLineNumber = 0,
186  const LOGOG_CHAR *sGroup = NULL,
187  const LOGOG_CHAR *sCategory = NULL,
188  const LOGOG_CHAR *sMessage = NULL,
189  const double dTimestamp = 0.0f );
190 
192  virtual bool SubscribeTo( Node & );
193 
195  virtual bool UnsubscribeTo( Node & );
196  virtual bool CanSubscribe() const;
197 };
198 
200 class TopicSink : public Topic
201 {
202 public:
203  virtual bool IsTopic() const;
204 
206  virtual void Initialize();
207 
209  virtual bool PublishTo( Node & );
210 
212  virtual bool UnpublishTo( Node & );
213 
215  virtual bool CanPublish() const;
216 };
217 }
218 
219 #endif // __LOGOG_TOPIC_HPP_
Definition: const.hpp:101
[Thread]
Definition: api.hpp:8
virtual bool SubscribeTo(Node &)
Definition: topic.hpp:144
virtual bool CanSubscribeCheckTopic(const Topic &other)
Definition: node.hpp:51
#define LOGOG_STRING
Definition: string.hpp:113
virtual int Transmit()
LOGOG_LEVEL_TYPE Level() const
TopicSource(const LOGOG_LEVEL_TYPE level=LOGOG_LEVEL_ALL, const LOGOG_CHAR *sFileName=NULL, const int nLineNumber=0, const LOGOG_CHAR *sGroup=NULL, const LOGOG_CHAR *sCategory=NULL, const LOGOG_CHAR *sMessage=NULL, const double dTimestamp=0.0f)
int TOPIC_FLAGS
[Topic Bits]
Definition: const.hpp:85
virtual bool CanSubscribeTo(const Node &otherNode)
virtual bool UnsubscribeTo(Node &)
const LOGOG_STRING & Message() const
virtual int Receive(const Topic &node)
#define LOGOG_LEVEL_TYPE
[Level Constants]
Definition: const.hpp:56
Filter(const LOGOG_LEVEL_TYPE level=LOGOG_LEVEL_ALL, const LOGOG_CHAR *sFileName=NULL, const int nLineNumber=0, const LOGOG_CHAR *sGroup=NULL, const LOGOG_CHAR *sCategory=NULL, const LOGOG_CHAR *sMessage=NULL, const double dTimestamp=0.0f)
virtual bool CanSubscribe() const
virtual bool IsTopic() const
virtual int Send(const Topic &node)
Definition: topic.hpp:180
const LOGOG_STRING & Group() const
virtual bool CanPublish() const
Definition: topic.hpp:163
void SetDefaultLevel(LOGOG_LEVEL_TYPE level)
Definition: topic.hpp:126
FilterDefault(const LOGOG_LEVEL_TYPE level)
virtual bool IsTopic() const
TopicLevel(const LOGOG_LEVEL_TYPE level)
wchar_t LOGOG_CHAR
Definition: string.hpp:14
Definition: const.hpp:94
virtual bool CanSubscribeCheckTopic(const Topic &other)
LOGOG_STRING m_vStringProps[TOPIC_STRING_COUNT]
Definition: topic.hpp:107
const LOGOG_STRING & Category() const
LOGOG_TIME Timestamp() const
#define LOGOG_LEVEL_ALL
Definition: const.hpp:53
int LineNumber() const
Topic(const LOGOG_LEVEL_TYPE level=LOGOG_LEVEL_ALL, const LOGOG_CHAR *sFileName=NULL, const int nLineNumber=0, const LOGOG_CHAR *sGroup=NULL, const LOGOG_CHAR *sCategory=NULL, const LOGOG_CHAR *sMessage=NULL, const double dTimestamp=0.0f)
FilterDefault & GetFilterDefault()
LOGOG_TIME m_tTime
Definition: topic.hpp:113
int Receive(const Topic &node)
int m_vIntProps[TOPIC_INT_COUNT]
Definition: topic.hpp:109
const LOGOG_STRING & FileName() const
virtual bool UnpublishTo(Node &)
TOPIC_FLAGS m_TopicFlags
Definition: topic.hpp:118
virtual bool CanSubscribeCheckTopic(const Topic &other)
TOPIC_FLAGS GetTopicFlags() const
virtual bool PublishTo(Node &subscriber)
virtual bool PublishTo(Node &)
virtual void Format(const LOGOG_CHAR *cFormatMessage,...)
Definition: topic.hpp:172
double LOGOG_TIME
Definition: timer.hpp:11
TopicGroup(const LOGOG_CHAR *sGroup=NULL)
virtual void Initialize()
Definition: topic.hpp:200
Definition: topic.hpp:15