00001 // 00002 // Copyright (C) 2004 Andras Varga 00003 // 00004 // This program is free software; you can redistribute it and/or 00005 // modify it under the terms of the GNU Lesser General Public License 00006 // as published by the Free Software Foundation; either version 2 00007 // of the License, or (at your option) any later version. 00008 // 00009 // This program is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 // GNU Lesser General Public License for more details. 00013 // 00014 // You should have received a copy of the GNU Lesser General Public License 00015 // along with this program; if not, see <http://www.gnu.org/licenses/>. 00016 // 00017 00018 #ifndef __INET_DUMBTCP_H 00019 #define __INET_DUMBTCP_H 00020 00021 #include <omnetpp.h> 00022 #include "TCPAlgorithm.h" 00023 00024 00028 class INET_API DumbTCPStateVariables : public TCPStateVariables 00029 { 00030 public: 00031 //... 00032 }; 00033 00034 00042 class INET_API DumbTCP : public TCPAlgorithm 00043 { 00044 protected: 00045 DumbTCPStateVariables *&state; // alias to TCLAlgorithm's 'state' 00046 00047 cMessage *rexmitTimer; // retransmission timer 00048 00049 protected: 00051 virtual TCPStateVariables *createStateVariables() { 00052 return new DumbTCPStateVariables(); 00053 } 00054 00055 public: 00057 DumbTCP(); 00058 00059 virtual ~DumbTCP(); 00060 00061 virtual void initialize(); 00062 00063 virtual void established(bool active); 00064 00065 virtual void connectionClosed(); 00066 00067 virtual void processTimer(cMessage *timer, TCPEventCode& event); 00068 00069 virtual void sendCommandInvoked(); 00070 00071 virtual void receivedOutOfOrderSegment(); 00072 00073 virtual void receiveSeqChanged(); 00074 00075 virtual void receivedDataAck(uint32 firstSeqAcked); 00076 00077 virtual void receivedDuplicateAck(); 00078 00079 virtual void receivedAckForDataNotYetSent(uint32 seq); 00080 00081 virtual void ackSent(); 00082 00083 virtual void dataSent(uint32 fromseq); 00084 00085 virtual void restartRexmitTimer(); 00086 00087 virtual void rttMeasurementCompleteUsingTS(uint32 echoedTS); 00088 00089 }; 00090 00091 #endif 00092 00093