📄 packet.h
字号:
/*****************************************************************************Copyright � 2001 - 2007, The Board of Trustees of the University of Illinois.All Rights Reserved.UDP-based Data Transfer Library (UDT) version 4National Center for Data Mining (NCDM)University of Illinois at Chicagohttp://www.ncdm.uic.edu/This library is free software; you can redistribute it and/or modify itunder the terms of the GNU Lesser General Public License as published bythe Free Software Foundation; either version 2.1 of the License, or (atyour option) any later version.This library is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU LesserGeneral Public License for more details.You should have received a copy of the GNU Lesser General Public Licensealong with this library; if not, write to the Free Software Foundation, Inc.,59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.*****************************************************************************//*****************************************************************************This header file contains the definition of UDT packet structure and operations.*****************************************************************************//*****************************************************************************written by Yunhong Gu [gu@lac.uic.edu], last updated 03/17/2007*****************************************************************************/#ifndef __UDT_PACKET_H__#define __UDT_PACKET_H__//#include "common.h"#include "udt.h"class CChannel;class CPacket{friend class CChannel;friend class CSndQueue;friend class CHash;public: int32_t& m_iSeqNo; // alias: sequence number int32_t& m_iMsgNo; // alias: message number int32_t& m_iTimeStamp; // alias: timestamp int32_t& m_iID; // alias: socket ID char*& m_pcData; // alias: data/control information static const int m_iPktHdrSize; // packet header sizepublic: CPacket(); ~CPacket(); // Functionality: // Get the payload or the control information field length. // Parameters: // None. // Returned value: // the payload or the control information field length. int getLength() const; // Functionality: // Set the payload or the control information field length. // Parameters: // 0) [in] len: the payload or the control information field length. // Returned value: // None. void setLength(const int& len); // Functionality: // Pack a Control packet. // Parameters: // 0) [in] pkttype: packet type filed. // 1) [in] lparam: pointer to the first data structure, explained by the packet type. // 2) [in] rparam: pointer to the second data structure, explained by the packet type. // 3) [in] size: size of rparam, in number of bytes; // Returned value: // None. void pack(const int& pkttype, void* lparam = NULL, void* rparam = NULL, const int& size = 0); // Functionality: // Read the packet vector. // Parameters: // None. // Returned value: // Pointer to the packet vector. iovec* getPacketVector(); // Functionality: // Read the packet flag. // Parameters: // None. // Returned value: // packet flag (0 or 1). int getFlag() const; // Functionality: // Read the packet type. // Parameters: // None. // Returned value: // packet type filed (000 ~ 111). int getType() const; // Functionality: // Read the extended packet type. // Parameters: // None. // Returned value: // extended packet type filed (0x000 ~ 0xFFF). int getExtendedType() const; // Functionality: // Read the ACK-2 seq. no. // Parameters: // None. // Returned value: // packet header field (bit 16~31). int32_t getAckSeqNo() const; // Functionality: // Read the message boundary flag bit. // Parameters: // None. // Returned value: // packet header field [1] (bit 0~1). int getMsgBoundary() const; // Functionality: // Read the message inorder delivery flag bit. // Parameters: // None. // Returned value: // packet header field [1] (bit 2). bool getMsgOrderFlag() const; // Functionality: // Read the message sequence number. // Parameters: // None. // Returned value: // packet header field [1] (bit 3~31). int32_t getMsgSeq() const;protected: uint32_t m_nHeader[4]; // The 128-bit header field iovec m_PacketVector[2]; // The 2-demension vector of UDT packet [header, data] int32_t __pad; void operator = (const CPacket&) {}};////////////////////////////////////////////////////////////////////////////////struct CHandShake{ int32_t m_iVersion; // UDT version int32_t m_iType; // UDT socket type int32_t m_iISN; // random initial sequence number int32_t m_iMSS; // maximum segment size int32_t m_iFlightFlagSize; // flow control window size int32_t m_iReqType; // connection request type: -1: response, 1: initial request, 0: rendezvous request int32_t m_iID; // socket ID};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -