Blob Blame Raw
#ifndef UDPRECVQUEUE_H
#define UDPRECVQUEUE_H


#include "common.h"



class Connection;


class UdpRecvQueue {
public:
	struct Entry {
		bool received;
		unsigned short size;
		unsigned char data[PACKET_SIZE];
	};
	
public:
	Connection &connection;
private:
	Time nextConfirmSendTime;
	bool confirmRequired;
	bool finalEntryAdded;
	
	Entry entries[PACKETS_COUNT];
	int current;
	unsigned int currentIndex;
	unsigned int endIndex;
	
public:
	explicit UdpRecvQueue(Connection &connection);
	~UdpRecvQueue();
	
	bool recvUdp(unsigned int index, const void *data, int size);
	bool sendUdpConfirm(bool force = false);
	bool canSentToTcp() const;
	int sendTcp();
	void whenWriteToUdp(Time &t) const;
	inline bool isConfirmRequired() const { return confirmRequired; }
};


#endif