Blame tcpqueue.h

dd2ea4
#ifndef TCPQUEUE_H
dd2ea4
#define TCPQUEUE_H
dd2ea4
dd2ea4
dd2ea4
#include "common.h"
dd2ea4
dd2ea4
dd2ea4
class Connection;
dd2ea4
dd2ea4
dd2ea4
class TcpQueue {
dd2ea4
public:
dd2ea4
	enum { ALLOCED_SIZE = TCP_BUFFER_SIZE + 1 };
dd2ea4
dd2ea4
public:
dd2ea4
	Connection &connection;
dd2ea4
private:
dd2ea4
	unsigned char buffer[ALLOCED_SIZE];
dd2ea4
	int begin;
dd2ea4
	int end;
dd2ea4
	
dd2ea4
public:
dd2ea4
	explicit TcpQueue(Connection &connection);
dd2ea4
	~TcpQueue();
dd2ea4
	
dd2ea4
	inline int busySize() const
dd2ea4
		{ return end < begin ? end + ALLOCED_SIZE - begin : end - begin; }
dd2ea4
	inline int freeSize() const
dd2ea4
		{ return TCP_BUFFER_SIZE - busySize(); }
dd2ea4
	
dd2ea4
	bool push(const void *data, int size);
dd2ea4
	bool pop(void *data, int size);
dd2ea4
	
dd2ea4
	int readFromTcp();
dd2ea4
	int writeToTcp();
dd2ea4
};
dd2ea4
dd2ea4
dd2ea4
#endif