Blame udpsendqueue.h

0da3a9
#ifndef UDPSENDQUEUE_H
0da3a9
#define UDPSENDQUEUE_H
0da3a9
0da3a9
0da3a9
#include "common.h"
0da3a9
0da3a9
873e9f
0da3a9
class Connection;
0da3a9
0da3a9
0da3a9
class UdpSendQueue {
0da3a9
public:
0da3a9
	struct Entry {
0da3a9
		Entry *prev, *next;
0da3a9
		Time resendTime;
0da3a9
		unsigned int index;
0da3a9
		unsigned short size;
0da3a9
		unsigned char data[PACKET_SIZE];
0da3a9
	};
0da3a9
	
0da3a9
public:
0da3a9
	Connection &connection;
0da3a9
private:
0da3a9
	Time nextSendTime;
0da3a9
	Time nextPartialSendTime;
0da3a9
	bool finalEntryAdded;
0da3a9
	unsigned int nextIndex;
0da3a9
	
0da3a9
	Entry *freeFirst;
0da3a9
	Entry *busyFirst, *busyLast;
0da3a9
	Entry entries[PACKETS_COUNT];
0da3a9
	
0da3a9
	Entry* allocEntry();
c47604
	void moveToEnd(Entry *e);
0da3a9
	void freeEntry(Entry *e);
0da3a9
	
0da3a9
public:
0da3a9
	explicit UdpSendQueue(Connection &connection);
0da3a9
	~UdpSendQueue();
0da3a9
	
0da3a9
	void confirm(unsigned int index, const unsigned char *bits, unsigned int bitsCount);
873e9f
	bool sendUdpSingle();
873e9f
	int sendUdp();
c47604
	bool canSentToUdp() const;
c47604
	void whenWriteToUdp(Time &t) const;
0da3a9
};
0da3a9
0da3a9
0da3a9
#endif