Index: net/third_party/udt/src/window.h |
=================================================================== |
--- net/third_party/udt/src/window.h (revision 78992) |
+++ net/third_party/udt/src/window.h (working copy) |
@@ -1,187 +0,0 @@ |
-/***************************************************************************** |
-Copyright (c) 2001 - 2011, The Board of Trustees of the University of Illinois. |
-All rights reserved. |
- |
-Redistribution and use in source and binary forms, with or without |
-modification, are permitted provided that the following conditions are |
-met: |
- |
-* Redistributions of source code must retain the above |
- copyright notice, this list of conditions and the |
- following disclaimer. |
- |
-* Redistributions in binary form must reproduce the |
- above copyright notice, this list of conditions |
- and the following disclaimer in the documentation |
- and/or other materials provided with the distribution. |
- |
-* Neither the name of the University of Illinois |
- nor the names of its contributors may be used to |
- endorse or promote products derived from this |
- software without specific prior written permission. |
- |
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS |
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-*****************************************************************************/ |
- |
-/***************************************************************************** |
-written by |
- Yunhong Gu, last updated 01/22/2011 |
-*****************************************************************************/ |
- |
-#ifndef __UDT_WINDOW_H__ |
-#define __UDT_WINDOW_H__ |
- |
- |
-#ifndef WIN32 |
- #include <sys/time.h> |
- #include <time.h> |
-#endif |
-#include "udt.h" |
- |
- |
-class CACKWindow |
-{ |
-public: |
- CACKWindow(const int& size = 1024); |
- ~CACKWindow(); |
- |
- // Functionality: |
- // Write an ACK record into the window. |
- // Parameters: |
- // 0) [in] seq: ACK seq. no. |
- // 1) [in] ack: DATA ACK no. |
- // Returned value: |
- // None. |
- |
- void store(const int32_t& seq, const int32_t& ack); |
- |
- // Functionality: |
- // Search the ACK-2 "seq" in the window, find out the DATA "ack" and caluclate RTT . |
- // Parameters: |
- // 0) [in] seq: ACK-2 seq. no. |
- // 1) [out] ack: the DATA ACK no. that matches the ACK-2 no. |
- // Returned value: |
- // RTT. |
- |
- int acknowledge(const int32_t& seq, int32_t& ack); |
- |
-private: |
- int32_t* m_piACKSeqNo; // Seq. No. for the ACK packet |
- int32_t* m_piACK; // Data Seq. No. carried by the ACK packet |
- uint64_t* m_pTimeStamp; // The timestamp when the ACK was sent |
- |
- int m_iSize; // Size of the ACK history window |
- int m_iHead; // Pointer to the lastest ACK record |
- int m_iTail; // Pointer to the oldest ACK record |
- |
-private: |
- CACKWindow(const CACKWindow&); |
- CACKWindow& operator=(const CACKWindow&); |
-}; |
- |
-//////////////////////////////////////////////////////////////////////////////// |
- |
-class CPktTimeWindow |
-{ |
-public: |
- CPktTimeWindow(const int& asize = 16, const int& psize = 16); |
- ~CPktTimeWindow(); |
- |
- // Functionality: |
- // read the minimum packet sending interval. |
- // Parameters: |
- // None. |
- // Returned value: |
- // minimum packet sending interval (microseconds). |
- |
- int getMinPktSndInt() const; |
- |
- // Functionality: |
- // Calculate the packes arrival speed. |
- // Parameters: |
- // None. |
- // Returned value: |
- // Packet arrival speed (packets per second). |
- |
- int getPktRcvSpeed() const; |
- |
- // Functionality: |
- // Estimate the bandwidth. |
- // Parameters: |
- // None. |
- // Returned value: |
- // Estimated bandwidth (packets per second). |
- |
- int getBandwidth() const; |
- |
- // Functionality: |
- // Record time information of a packet sending. |
- // Parameters: |
- // 0) currtime: timestamp of the packet sending. |
- // Returned value: |
- // None. |
- |
- void onPktSent(const int& currtime); |
- |
- // Functionality: |
- // Record time information of an arrived packet. |
- // Parameters: |
- // None. |
- // Returned value: |
- // None. |
- |
- void onPktArrival(); |
- |
- // Functionality: |
- // Record the arrival time of the first probing packet. |
- // Parameters: |
- // None. |
- // Returned value: |
- // None. |
- |
- void probe1Arrival(); |
- |
- // Functionality: |
- // Record the arrival time of the second probing packet and the interval between packet pairs. |
- // Parameters: |
- // None. |
- // Returned value: |
- // None. |
- |
- void probe2Arrival(); |
- |
-private: |
- int m_iAWSize; // size of the packet arrival history window |
- int* m_piPktWindow; // packet information window |
- int* m_piPktReplica; |
- int m_iPktWindowPtr; // position pointer of the packet info. window. |
- |
- int m_iPWSize; // size of probe history window size |
- int* m_piProbeWindow; // record inter-packet time for probing packet pairs |
- int* m_piProbeReplica; |
- int m_iProbeWindowPtr; // position pointer to the probing window |
- |
- int m_iLastSentTime; // last packet sending time |
- int m_iMinPktSndInt; // Minimum packet sending interval |
- |
- uint64_t m_LastArrTime; // last packet arrival time |
- uint64_t m_CurrArrTime; // current packet arrival time |
- uint64_t m_ProbeTime; // arrival time of the first probing packet |
- |
-private: |
- CPktTimeWindow(const CPktTimeWindow&); |
- CPktTimeWindow &operator=(const CPktTimeWindow&); |
-}; |
- |
- |
-#endif |