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 __FLOW_TRACE_FLOW_TRACER_H__
00032 #define __FLOW_TRACE_FLOW_TRACER_H__
00033
00034 #include "config.h"
00035
00036 #include "pydtn/Tracer.h"
00037 #include "dtn/ByteString.h"
00038 #include <ostream>
00039
00042
00044 class FlowTracer : public Tracer
00045 {
00046 public :
00049 FlowTracer( std::ostream& s );
00051 virtual ~FlowTracer();
00052
00055 void node( const WrapNode& wn );
00056
00059 void link( const WrapLink& wl );
00060
00064 void enqueue( const DTN::Bundle& b, const DTN::Node* n );
00065
00069 void dequeue( const DTN::Bundle& b, const DTN::Node* n );
00070
00074 void send( const DTN::Bundle& b, const DTN::Node* n );
00075
00079 void receive( const DTN::Bundle& b, const DTN::Node* n );
00080
00085 void drop( const DTN::Bundle& b,
00086 const DTN::DropCause& c,
00087 const DTN::Node* n );
00088
00089 protected :
00095 void traceBundle( const DTN::Bundle& b,
00096 const std::string& func,
00097 const DTN::Node& n,
00098 const std::string& xtra="" );
00099
00106 std::string stringify( const DTN::ByteString& b ) const;
00107
00108 private :
00109 std::ostream& m_stream;
00110 };
00111
00113
00114 #endif // __FLOW_TRACE_FLOW_TRACER_H__