00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef _RLogNode_incl_
00021
#define _RLogNode_incl_
00022
00023
#include <list>
00024
#include <set>
00025
#include <time.h>
00026
#include <string>
00027
00028
#include <rlog/common.h>
00029
#include <rlog/Mutex.h>
00030
00031
namespace rlog
00032 {
00033
class RLOG_DECL RLogNode;
00034
00047 struct RLOG_DECL RLogData
00048 {
00049
struct PublishLoc *publisher;
00051 time_t time;
00053 const char *msg;
00054
00055
00056
00057
00058 std::set< RLogNode * > seen;
00059 };
00060
00061
00062 class RLogNode
00063 {
00064
public:
00065
RLogNode();
00066
virtual ~RLogNode();
00067
00068
00069
virtual void clear();
00070
00071
virtual void publish(
const RLogData &data );
00072
00073
00074
virtual void addPublisher( RLogNode * );
00075
virtual void dropPublisher( RLogNode *,
bool callbacks=
true );
00076
00077
bool enabled()
const;
00078
00079
00080
virtual void addSubscriber( RLogNode * );
00081
virtual void dropSubscriber( RLogNode * );
00082
00083
virtual void isInterested( RLogNode *node,
bool isInterested );
00084
00085
protected:
00086
00087
virtual void setEnabled(
bool newState);
00088
00090 std::list< RLogNode * >
publishers;
00091
00093 std::list< RLogNode * >
subscribers;
00094
00096 std::list< RLogNode * >
interestList;
00097
00098
Mutex mutex;
00099 };
00100 }
00101
00102
#endif
00103