Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Unified Diff: net/third_party/udt/src/packet.cpp

Issue 6708091: Remove UDT. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/third_party/udt/src/packet.h ('k') | net/third_party/udt/src/queue.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/third_party/udt/src/packet.cpp
===================================================================
--- net/third_party/udt/src/packet.cpp (revision 78992)
+++ net/third_party/udt/src/packet.cpp (working copy)
@@ -1,410 +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 02/12/2011
-*****************************************************************************/
-
-
-//////////////////////////////////////////////////////////////////////////////
-// 0 1 2 3
-// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// | Packet Header |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// | |
-// ~ Data / Control Information Field ~
-// | |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-//
-// 0 1 2 3
-// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// |0| Sequence Number |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// |ff |o| Message Number |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// | Time Stamp |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// | Destination Socket ID |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-//
-// bit 0:
-// 0: Data Packet
-// 1: Control Packet
-// bit ff:
-// 11: solo message packet
-// 10: first packet of a message
-// 01: last packet of a message
-// bit o:
-// 0: in order delivery not required
-// 1: in order delivery required
-//
-// 0 1 2 3
-// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// |1| Type | Reserved |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// | Additional Info |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// | Time Stamp |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// | Destination Socket ID |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-//
-// bit 1-15:
-// 0: Protocol Connection Handshake
-// Add. Info: Undefined
-// Control Info: Handshake information (see CHandShake)
-// 1: Keep-alive
-// Add. Info: Undefined
-// Control Info: None
-// 2: Acknowledgement (ACK)
-// Add. Info: The ACK sequence number
-// Control Info: The sequence number to which (but not include) all the previous packets have beed received
-// Optional: RTT
-// RTT Variance
-// available receiver buffer size (in bytes)
-// advertised flow window size (number of packets)
-// estimated bandwidth (number of packets per second)
-// 3: Negative Acknowledgement (NAK)
-// Add. Info: Undefined
-// Control Info: Loss list (see loss list coding below)
-// 4: Congestion/Delay Warning
-// Add. Info: Undefined
-// Control Info: None
-// 5: Shutdown
-// Add. Info: Undefined
-// Control Info: None
-// 6: Acknowledgement of Acknowledement (ACK-square)
-// Add. Info: The ACK sequence number
-// Control Info: None
-// 7: Message Drop Request
-// Add. Info: Message ID
-// Control Info: first sequence number of the message
-// last seqeunce number of the message
-// 8: Error Signal from the Peer Side
-// Add. Info: Error code
-// Control Info: None
-// 0x7FFF: Explained by bits 16 - 31
-//
-// bit 16 - 31:
-// This space is used for future expansion or user defined control packets.
-//
-// 0 1 2 3
-// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// |1| Sequence Number a (first) |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// |0| Sequence Number b (last) |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// |0| Sequence Number (single) |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-//
-// Loss List Field Coding:
-// For any consectutive lost seqeunce numbers that the differnece between
-// the last and first is more than 1, only record the first (a) and the
-// the last (b) sequence numbers in the loss list field, and modify the
-// the first bit of a to 1.
-// For any single loss or consectutive loss less than 2 packets, use
-// the original sequence numbers in the field.
-
-
-#include <cstring>
-#include "packet.h"
-
-
-const int CPacket::m_iPktHdrSize = 16;
-const int CHandShake::m_iContentSize = 48;
-
-
-// Set up the aliases in the constructure
-CPacket::CPacket():
-m_iSeqNo((int32_t&)(m_nHeader[0])),
-m_iMsgNo((int32_t&)(m_nHeader[1])),
-m_iTimeStamp((int32_t&)(m_nHeader[2])),
-m_iID((int32_t&)(m_nHeader[3])),
-m_pcData((char*&)(m_PacketVector[1].iov_base)),
-__pad()
-{
- for (int i = 0; i < 4; ++ i)
- m_nHeader[i] = 0;
- m_PacketVector[0].iov_base = (char *)m_nHeader;
- m_PacketVector[0].iov_len = CPacket::m_iPktHdrSize;
- m_PacketVector[1].iov_base = NULL;
- m_PacketVector[1].iov_len = 0;
-}
-
-CPacket::~CPacket()
-{
-}
-
-int CPacket::getLength() const
-{
- return m_PacketVector[1].iov_len;
-}
-
-void CPacket::setLength(const int& len)
-{
- m_PacketVector[1].iov_len = len;
-}
-
-void CPacket::pack(const int& pkttype, void* lparam, void* rparam, const int& size)
-{
- // Set (bit-0 = 1) and (bit-1~15 = type)
- m_nHeader[0] = 0x80000000 | (pkttype << 16);
-
- // Set additional information and control information field
- switch (pkttype)
- {
- case 2: //0010 - Acknowledgement (ACK)
- // ACK packet seq. no.
- if (NULL != lparam)
- m_nHeader[1] = *(int32_t *)lparam;
-
- // data ACK seq. no.
- // optional: RTT (microsends), RTT variance (microseconds) advertised flow window size (packets), and estimated link capacity (packets per second)
- m_PacketVector[1].iov_base = (char *)rparam;
- m_PacketVector[1].iov_len = size;
-
- break;
-
- case 6: //0110 - Acknowledgement of Acknowledgement (ACK-2)
- // ACK packet seq. no.
- m_nHeader[1] = *(int32_t *)lparam;
-
- // control info field should be none
- // but "writev" does not allow this
- m_PacketVector[1].iov_base = (char *)&__pad; //NULL;
- m_PacketVector[1].iov_len = 4; //0;
-
- break;
-
- case 3: //0011 - Loss Report (NAK)
- // loss list
- m_PacketVector[1].iov_base = (char *)rparam;
- m_PacketVector[1].iov_len = size;
-
- break;
-
- case 4: //0100 - Congestion Warning
- // control info field should be none
- // but "writev" does not allow this
- m_PacketVector[1].iov_base = (char *)&__pad; //NULL;
- m_PacketVector[1].iov_len = 4; //0;
-
- break;
-
- case 1: //0001 - Keep-alive
- // control info field should be none
- // but "writev" does not allow this
- m_PacketVector[1].iov_base = (char *)&__pad; //NULL;
- m_PacketVector[1].iov_len = 4; //0;
-
- break;
-
- case 0: //0000 - Handshake
- // control info filed is handshake info
- m_PacketVector[1].iov_base = (char *)rparam;
- m_PacketVector[1].iov_len = size; //sizeof(CHandShake);
-
- break;
-
- case 5: //0101 - Shutdown
- // control info field should be none
- // but "writev" does not allow this
- m_PacketVector[1].iov_base = (char *)&__pad; //NULL;
- m_PacketVector[1].iov_len = 4; //0;
-
- break;
-
- case 7: //0111 - Message Drop Request
- // msg id
- m_nHeader[1] = *(int32_t *)lparam;
-
- //first seq no, last seq no
- m_PacketVector[1].iov_base = (char *)rparam;
- m_PacketVector[1].iov_len = size;
-
- break;
-
- case 8: //1000 - Error Signal from the Peer Side
- // Error type
- m_nHeader[1] = *(int32_t *)lparam;
-
- // control info field should be none
- // but "writev" does not allow this
- m_PacketVector[1].iov_base = (char *)&__pad; //NULL;
- m_PacketVector[1].iov_len = 4; //0;
-
- break;
-
- case 32767: //0x7FFF - Reserved for user defined control packets
- // for extended control packet
- // "lparam" contains the extended type information for bit 16 - 31
- // "rparam" is the control information
- m_nHeader[0] |= *(int32_t *)lparam;
-
- if (NULL != rparam)
- {
- m_PacketVector[1].iov_base = (char *)rparam;
- m_PacketVector[1].iov_len = size;
- }
- else
- {
- m_PacketVector[1].iov_base = (char *)&__pad;
- m_PacketVector[1].iov_len = 4;
- }
-
- break;
-
- default:
- break;
- }
-}
-
-iovec* CPacket::getPacketVector()
-{
- return m_PacketVector;
-}
-
-int CPacket::getFlag() const
-{
- // read bit 0
- return m_nHeader[0] >> 31;
-}
-
-int CPacket::getType() const
-{
- // read bit 1~15
- return (m_nHeader[0] >> 16) & 0x00007FFF;
-}
-
-int CPacket::getExtendedType() const
-{
- // read bit 16~31
- return m_nHeader[0] & 0x0000FFFF;
-}
-
-int32_t CPacket::getAckSeqNo() const
-{
- // read additional information field
- return m_nHeader[1];
-}
-
-int CPacket::getMsgBoundary() const
-{
- // read [1] bit 0~1
- return m_nHeader[1] >> 30;
-}
-
-bool CPacket::getMsgOrderFlag() const
-{
- // read [1] bit 2
- return (1 == ((m_nHeader[1] >> 29) & 1));
-}
-
-int32_t CPacket::getMsgSeq() const
-{
- // read [1] bit 3~31
- return m_nHeader[1] & 0x1FFFFFFF;
-}
-
-CPacket* CPacket::clone() const
-{
- CPacket* pkt = new CPacket;
- memcpy(pkt->m_nHeader, m_nHeader, m_iPktHdrSize);
- pkt->m_pcData = new char[m_PacketVector[1].iov_len];
- memcpy(pkt->m_pcData, m_pcData, m_PacketVector[1].iov_len);
- pkt->m_PacketVector[1].iov_len = m_PacketVector[1].iov_len;
-
- return pkt;
-}
-
-CHandShake::CHandShake():
-m_iVersion(0),
-m_iType(0),
-m_iISN(0),
-m_iMSS(0),
-m_iFlightFlagSize(0),
-m_iReqType(0),
-m_iID(0),
-m_iCookie(0),
-m_piPeerIP()
-{
-}
-
-int CHandShake::serialize(char* buf, int& size)
-{
- if (size < m_iContentSize)
- return -1;
-
- int32_t* p = (int32_t*)buf;
- *p++ = m_iVersion;
- *p++ = m_iType;
- *p++ = m_iISN;
- *p++ = m_iMSS;
- *p++ = m_iFlightFlagSize;
- *p++ = m_iReqType;
- *p++ = m_iID;
- *p++ = m_iCookie;
- for (int i = 0; i < 4; ++ i)
- *p++ = m_piPeerIP[i];
-
- size = m_iContentSize;
-
- return 0;
-}
-
-int CHandShake::deserialize(const char* buf, const int& size)
-{
- if (size < m_iContentSize)
- return -1;
-
- int32_t* p = (int32_t*)buf;
- m_iVersion = *p++;
- m_iType = *p++;
- m_iISN = *p++;
- m_iMSS = *p++;
- m_iFlightFlagSize = *p++;
- m_iReqType = *p++;
- m_iID = *p++;
- m_iCookie = *p++;
- for (int i = 0; i < 4; ++ i)
- m_piPeerIP[i] = *p++;
-
- return 0;
-}
« no previous file with comments | « net/third_party/udt/src/packet.h ('k') | net/third_party/udt/src/queue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698