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_SIM_LINK_H__
00032 #define __WRAPPERS_HARNESS_SIM_LINK_H__
00033
00034 #include "config.h"
00035 #include "dtn/Link.h"
00036 #include "simlpy/Time.h"
00037
00038 class WrapLink;
00039
00042
00049 class SimLink : public DTN::Link
00050 {
00051 public :
00068 SimLink( WrapLink* owner, bool up = true );
00070 virtual ~SimLink();
00071
00074 bool available() const { return m_up && !m_busy; }
00075
00086 void send( DTN::Bundle* b );
00087
00089 const DTN::ByteString& remoteAddr() const;
00090
00092 const Time& latency() const { return m_latency; }
00094 unsigned long int bandwidth() const { return m_bandwidth; }
00096 bool busy() const { return m_busy; }
00098 const Time& busyUntil() const { return m_busyUntil; }
00100 bool up() const { return m_up; }
00102 const Time& upSince() const { return m_upSince; }
00103
00105 void setLatency( double lat );
00108 void setBandwidth( unsigned long int bw ) { m_bandwidth = bw; }
00110 void setBusy( bool b ) { m_busy = b; }
00112 void setUp();
00114 void setDown();
00115
00116 private :
00117 WrapLink* m_owner;
00118 Time m_latency;
00119 unsigned long int m_bandwidth;
00120 mutable bool m_busy;
00121 mutable Time m_busyUntil;
00122 mutable Time m_earliestDelivery;
00123 mutable bool m_up;
00124 mutable Time m_upSince;
00125 };
00126
00128
00129 #endif