|
 |
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:
|
|
 |
873e9f |
enum { ALLOCATED_SIZE = TCP_BUFFER_SIZE + 1 };
|
|
 |
dd2ea4 |
|
|
 |
dd2ea4 |
public:
|
|
 |
dd2ea4 |
Connection &connection;
|
|
 |
dd2ea4 |
private:
|
|
 |
873e9f |
unsigned char buffer[ALLOCATED_SIZE];
|
|
 |
dd2ea4 |
int begin;
|
|
 |
dd2ea4 |
int end;
|
|
 |
dd2ea4 |
|
|
 |
dd2ea4 |
public:
|
|
 |
dd2ea4 |
explicit TcpQueue(Connection &connection);
|
|
 |
dd2ea4 |
~TcpQueue();
|
|
 |
dd2ea4 |
|
|
 |
dd2ea4 |
inline int busySize() const
|
|
 |
873e9f |
{ return end < begin ? end + ALLOCATED_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
|