00001 #ifndef __SAR_H 00002 #define __SAR_H 00003 00004 #include "TpPacket.h" 00005 #include "ReceiveWindow.h" 00006 #include "SendWindow.h" 00007 #include "BasicObject.h" 00008 00009 class SAR : public BasicObject 00010 { 00011 public: 00012 SAR(PacketWriter* packetWriter, int serviceNumber); 00013 virtual ~SAR(); 00014 00015 TimeValue getAverageRtt(); 00016 00017 void connectionClosed(); 00018 00019 // called by TransportLayer 00020 int reliableSend(u_char* data, int length); 00021 int receive(u_char* buffer, int bufferLength); 00022 00023 // used by service table and sliding windows 00024 int sendDataPacket(TpPacket* packet); 00025 void receivePacket(TpPacket* packet); 00026 00027 virtual void toStream(std::ostream&); 00028 00029 private: 00031 ReceiveWindow* m_receive; 00032 00034 SendWindow* m_send; 00035 00037 int m_serviceNumber; 00038 00040 PacketWriter* m_packetWriter; 00041 00043 u_char* m_buffer; 00044 00046 int m_mesgLen; 00047 00049 int m_totalLen; 00050 }; 00051 00052 #endif //#define __SAR_H