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

Unified Diff: net/third_party/udt/src/queue.h

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.cpp ('k') | net/third_party/udt/src/queue.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/third_party/udt/src/queue.h
===================================================================
--- net/third_party/udt/src/queue.h (revision 78992)
+++ net/third_party/udt/src/queue.h (working copy)
@@ -1,519 +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/12/2011
-*****************************************************************************/
-
-
-#ifndef __UDT_QUEUE_H__
-#define __UDT_QUEUE_H__
-
-#include "common.h"
-#include "packet.h"
-#include "channel.h"
-#include <vector>
-#include <map>
-#include <queue>
-
-class CUDT;
-
-struct CUnit
-{
- CPacket m_Packet; // packet
- int m_iFlag; // 0: free, 1: occupied, 2: msg read but not freed (out-of-order), 3: msg dropped
-};
-
-class CUnitQueue
-{
-friend class CRcvQueue;
-friend class CRcvBuffer;
-
-public:
- CUnitQueue();
- ~CUnitQueue();
-
-public:
-
- // Functionality:
- // Initialize the unit queue.
- // Parameters:
- // 1) [in] size: queue size
- // 2) [in] mss: maximum segament size
- // 3) [in] version: IP version
- // Returned value:
- // 0: success, -1: failure.
-
- int init(const int& size, const int& mss, const int& version);
-
- // Functionality:
- // Increase (double) the unit queue size.
- // Parameters:
- // None.
- // Returned value:
- // 0: success, -1: failure.
-
- int increase();
-
- // Functionality:
- // Decrease (halve) the unit queue size.
- // Parameters:
- // None.
- // Returned value:
- // 0: success, -1: failure.
-
- int shrink();
-
- // Functionality:
- // find an available unit for incoming packet.
- // Parameters:
- // None.
- // Returned value:
- // Pointer to the available unit, NULL if not found.
-
- CUnit* getNextAvailUnit();
-
-private:
- struct CQEntry
- {
- CUnit* m_pUnit; // unit queue
- char* m_pBuffer; // data buffer
- int m_iSize; // size of each queue
-
- CQEntry* m_pNext;
- }
- *m_pQEntry, // pointer to the first unit queue
- *m_pCurrQueue, // pointer to the current available queue
- *m_pLastQueue; // pointer to the last unit queue
-
- CUnit* m_pAvailUnit; // recent available unit
-
- int m_iSize; // total size of the unit queue, in number of packets
- int m_iCount; // total number of valid packets in the queue
-
- int m_iMSS; // unit buffer size
- int m_iIPversion; // IP version
-
-private:
- CUnitQueue(const CUnitQueue&);
- CUnitQueue& operator=(const CUnitQueue&);
-};
-
-struct CSNode
-{
- CUDT* m_pUDT; // Pointer to the instance of CUDT socket
- uint64_t m_llTimeStamp; // Time Stamp
-
- int m_iHeapLoc; // location on the heap, -1 means not on the heap
-};
-
-class CSndUList
-{
-friend class CSndQueue;
-
-public:
- CSndUList();
- ~CSndUList();
-
-public:
-
- // Functionality:
- // Insert a new UDT instance into the list.
- // Parameters:
- // 1) [in] ts: time stamp: next processing time
- // 2) [in] u: pointer to the UDT instance
- // Returned value:
- // None.
-
- void insert(const int64_t& ts, const CUDT* u);
-
- // Functionality:
- // Update the timestamp of the UDT instance on the list.
- // Parameters:
- // 1) [in] u: pointer to the UDT instance
- // 2) [in] resechedule: if the timestampe shoudl be rescheduled
- // Returned value:
- // None.
-
- void update(const CUDT* u, const bool& reschedule = true);
-
- // Functionality:
- // Retrieve the next packet and peer address from the first entry, and reschedule it in the queue.
- // Parameters:
- // 0) [out] addr: destination address of the next packet
- // 1) [out] pkt: the next packet to be sent
- // Returned value:
- // 1 if successfully retrieved, -1 if no packet found.
-
- int pop(sockaddr*& addr, CPacket& pkt);
-
- // Functionality:
- // Remove UDT instance from the list.
- // Parameters:
- // 1) [in] u: pointer to the UDT instance
- // Returned value:
- // None.
-
- void remove(const CUDT* u);
-
- // Functionality:
- // Retrieve the next scheduled processing time.
- // Parameters:
- // None.
- // Returned value:
- // Scheduled processing time of the first UDT socket in the list.
-
- uint64_t getNextProcTime();
-
-private:
- void insert_(const int64_t& ts, const CUDT* u);
- void remove_(const CUDT* u);
-
-private:
- CSNode** m_pHeap; // The heap array
- int m_iArrayLength; // physical length of the array
- int m_iLastEntry; // position of last entry on the heap array
-
- pthread_mutex_t m_ListLock;
-
- pthread_mutex_t* m_pWindowLock;
- pthread_cond_t* m_pWindowCond;
-
- CTimer* m_pTimer;
-
-private:
- CSndUList(const CSndUList&);
- CSndUList& operator=(const CSndUList&);
-};
-
-struct CRNode
-{
- CUDT* m_pUDT; // Pointer to the instance of CUDT socket
- uint64_t m_llTimeStamp; // Time Stamp
-
- CRNode* m_pPrev; // previous link
- CRNode* m_pNext; // next link
-
- bool m_bOnList; // if the node is already on the list
-};
-
-class CRcvUList
-{
-public:
- CRcvUList();
- ~CRcvUList();
-
-public:
-
- // Functionality:
- // Insert a new UDT instance to the list.
- // Parameters:
- // 1) [in] u: pointer to the UDT instance
- // Returned value:
- // None.
-
- void insert(const CUDT* u);
-
- // Functionality:
- // Remove the UDT instance from the list.
- // Parameters:
- // 1) [in] u: pointer to the UDT instance
- // Returned value:
- // None.
-
- void remove(const CUDT* u);
-
- // Functionality:
- // Move the UDT instance to the end of the list, if it already exists; otherwise, do nothing.
- // Parameters:
- // 1) [in] u: pointer to the UDT instance
- // Returned value:
- // None.
-
- void update(const CUDT* u);
-
-public:
- CRNode* m_pUList; // the head node
-
-private:
- CRNode* m_pLast; // the last node
-
-private:
- CRcvUList(const CRcvUList&);
- CRcvUList& operator=(const CRcvUList&);
-};
-
-class CHash
-{
-public:
- CHash();
- ~CHash();
-
-public:
-
- // Functionality:
- // Initialize the hash table.
- // Parameters:
- // 1) [in] size: hash table size
- // Returned value:
- // None.
-
- void init(const int& size);
-
- // Functionality:
- // Look for a UDT instance from the hash table.
- // Parameters:
- // 1) [in] id: socket ID
- // Returned value:
- // Pointer to a UDT instance, or NULL if not found.
-
- CUDT* lookup(const int32_t& id);
-
- // Functionality:
- // Insert an entry to the hash table.
- // Parameters:
- // 1) [in] id: socket ID
- // 2) [in] u: pointer to the UDT instance
- // Returned value:
- // None.
-
- void insert(const int32_t& id, const CUDT* u);
-
- // Functionality:
- // Remove an entry from the hash table.
- // Parameters:
- // 1) [in] id: socket ID
- // Returned value:
- // None.
-
- void remove(const int32_t& id);
-
-private:
- struct CBucket
- {
- int32_t m_iID; // Socket ID
- CUDT* m_pUDT; // Socket instance
-
- CBucket* m_pNext; // next bucket
- } **m_pBucket; // list of buckets (the hash table)
-
- int m_iHashSize; // size of hash table
-
-private:
- CHash(const CHash&);
- CHash& operator=(const CHash&);
-};
-
-class CRendezvousQueue
-{
-public:
- CRendezvousQueue();
- ~CRendezvousQueue();
-
-public:
- void insert(const UDTSOCKET& id, const int& ipv, const sockaddr* addr);
- void remove(const UDTSOCKET& id);
- bool retrieve(const sockaddr* addr, UDTSOCKET& id);
-
-private:
- struct CRL
- {
- UDTSOCKET m_iID;
- int m_iIPversion;
- sockaddr* m_pPeerAddr;
- };
- std::vector<CRL> m_vRendezvousID; // The sockets currently in rendezvous mode
-
- pthread_mutex_t m_RIDVectorLock;
-};
-
-class CSndQueue
-{
-friend class CUDT;
-friend class CUDTUnited;
-
-public:
- CSndQueue();
- ~CSndQueue();
-
-public:
-
- // Functionality:
- // Initialize the sending queue.
- // Parameters:
- // 1) [in] c: UDP channel to be associated to the queue
- // 2) [in] t: Timer
- // Returned value:
- // None.
-
- void init(const CChannel* c, const CTimer* t);
-
- // Functionality:
- // Send out a packet to a given address.
- // Parameters:
- // 1) [in] addr: destination address
- // 2) [in] packet: packet to be sent out
- // Returned value:
- // Size of data sent out.
-
- int sendto(const sockaddr* addr, CPacket& packet);
-
-private:
-#ifndef WIN32
- static void* worker(void* param);
-#else
- static DWORD WINAPI worker(LPVOID param);
-#endif
-
- pthread_t m_WorkerThread;
-
-private:
- CSndUList* m_pSndUList; // List of UDT instances for data sending
- CChannel* m_pChannel; // The UDP channel for data sending
- CTimer* m_pTimer; // Timing facility
-
- pthread_mutex_t m_WindowLock;
- pthread_cond_t m_WindowCond;
-
- volatile bool m_bClosing; // closing the worker
- pthread_cond_t m_ExitCond;
-
-private:
- CSndQueue(const CSndQueue&);
- CSndQueue& operator=(const CSndQueue&);
-};
-
-class CRcvQueue
-{
-friend class CUDT;
-friend class CUDTUnited;
-
-public:
- CRcvQueue();
- ~CRcvQueue();
-
-public:
-
- // Functionality:
- // Initialize the receiving queue.
- // Parameters:
- // 1) [in] size: queue size
- // 2) [in] mss: maximum packet size
- // 3) [in] version: IP version
- // 4) [in] hsize: hash table size
- // 5) [in] c: UDP channel to be associated to the queue
- // 6) [in] t: timer
- // Returned value:
- // None.
-
- void init(const int& size, const int& payload, const int& version, const int& hsize, const CChannel* c, const CTimer* t);
-
- // Functionality:
- // Read a packet for a specific UDT socket id.
- // Parameters:
- // 1) [in] id: Socket ID
- // 2) [out] packet: received packet
- // Returned value:
- // Data size of the packet
-
- int recvfrom(const int32_t& id, CPacket& packet);
-
-private:
-#ifndef WIN32
- static void* worker(void* param);
-#else
- static DWORD WINAPI worker(LPVOID param);
-#endif
-
- pthread_t m_WorkerThread;
-
-private:
- CUnitQueue m_UnitQueue; // The received packet queue
-
- CRcvUList* m_pRcvUList; // List of UDT instances that will read packets from the queue
- CHash* m_pHash; // Hash table for UDT socket looking up
- CChannel* m_pChannel; // UDP channel for receving packets
- CTimer* m_pTimer; // shared timer with the snd queue
-
- int m_iPayloadSize; // packet payload size
-
- volatile bool m_bClosing; // closing the workder
- pthread_cond_t m_ExitCond;
-
-private:
- int setListener(const CUDT* u);
- void removeListener(const CUDT* u);
-
- void setNewEntry(CUDT* u);
- bool ifNewEntry();
- CUDT* getNewEntry();
-
- void storePkt(const int32_t& id, CPacket* pkt);
-
-private:
- pthread_mutex_t m_LSLock;
- volatile CUDT* m_pListener; // pointer to the (unique, if any) listening UDT entity
- CRendezvousQueue* m_pRendezvousQueue; // The list of sockets in rendezvous mode
-
- std::vector<CUDT*> m_vNewEntry; // newly added entries, to be inserted
- pthread_mutex_t m_IDLock;
-
- std::map<int32_t, std::queue<CPacket*> > m_mBuffer; // temporary buffer for rendezvous connection request
- pthread_mutex_t m_PassLock;
- pthread_cond_t m_PassCond;
-
-private:
- CRcvQueue(const CRcvQueue&);
- CRcvQueue& operator=(const CRcvQueue&);
-};
-
-struct CMultiplexer
-{
- CSndQueue* m_pSndQueue; // The sending queue
- CRcvQueue* m_pRcvQueue; // The receiving queue
- CChannel* m_pChannel; // The UDP channel for sending and receiving
- CTimer* m_pTimer; // The timer
-
- int m_iPort; // The UDP port number of this multiplexer
- int m_iIPversion; // IP version
- int m_iMSS; // Maximum Segment Size
- int m_iRefCount; // number of UDT instances that are associated with this multiplexer
- bool m_bReusable; // if this one can be shared with others
-
- int m_iID; // multiplexer ID
-};
-
-#endif
« no previous file with comments | « net/third_party/udt/src/packet.cpp ('k') | net/third_party/udt/src/queue.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698