00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __WRAPPERS_HARNESS_TRACER_H__
00032 #define __WRAPPERS_HARNESS_TRACER_H__
00033
00034 #include "config.h"
00035
00036 #include "dtn/Bundle.h"
00037 #include "dtn/Node.h"
00038 #include <vector>
00039
00040 class WrapNode;
00041 class WrapLink;
00042
00045
00047 class Tracer
00048 {
00049 public :
00051 Tracer() {}
00053 virtual ~Tracer() {}
00054
00057 virtual void node( const WrapNode& wn ) = 0;
00058
00061 virtual void link( const WrapLink& wl ) = 0;
00062
00066 virtual void enqueue( const DTN::Bundle& b, const DTN::Node* n ) = 0;
00067
00071 virtual void dequeue( const DTN::Bundle& b, const DTN::Node* n ) = 0;
00072
00076 virtual void send( const DTN::Bundle& b, const DTN::Node* n ) = 0;
00077
00081 virtual void receive( const DTN::Bundle& b, const DTN::Node* n ) = 0;
00082
00087 virtual void drop( const DTN::Bundle& b,
00088 const DTN::DropCause& c,
00089 const DTN::Node* n ) = 0;
00090 };
00091
00093 class TracerChain : public Tracer
00094 {
00095 public :
00097 typedef std::vector< Tracer* > ChainType;
00098
00100 TracerChain() {}
00101
00103 virtual ~TracerChain();
00104
00105 void node( const WrapNode& wn );
00106 void link( const WrapLink& wl );
00107
00108 void enqueue( const DTN::Bundle& b, const DTN::Node* n );
00109 void dequeue( const DTN::Bundle& b, const DTN::Node* n );
00110 void send( const DTN::Bundle& b, const DTN::Node* n );
00111 void receive( const DTN::Bundle& b, const DTN::Node* n );
00112 void drop( const DTN::Bundle& b,
00113 const DTN::DropCause& c,
00114 const DTN::Node* n );
00115
00118 void addTracer( Tracer* t );
00119
00120 private :
00121 ChainType m_chain;
00122 };
00123
00132 class GlobalTracer : public TracerChain
00133 {
00134 public :
00136 static void enable();
00137
00139 static GlobalTracer* instance();
00140
00141 protected :
00143 GlobalTracer();
00145 virtual ~GlobalTracer();
00146
00148 static GlobalTracer* m_instance;
00149 };
00150
00152
00153 #endif // __WRAPPERS_HARNESS_TRACER_H__