1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
#ifndef CONNECTION_H
#define CONNECTION_H
#include <string>
#include <boost/shared_ptr.hpp>
#include "RawPacket.h"
namespace netcode
{
/**
@brief Base class for connecting to various recievers / senders
*/
class CConnection
{
public:
CConnection();
virtual ~CConnection();
virtual void SendData(boost::shared_ptr<const RawPacket> data)=0;
virtual bool HasIncomingData() const = 0;
/**
@brief Take a look at the messages that will be returned by GetData().
@return A RawPacket holding the data, or 0 if no data
@param ahead How many packets to look ahead. A typical usage would be:
for (int ahead = 0; (packet = conn->Peek(ahead)); ++ahead) {}
*/
virtual boost::shared_ptr<const RawPacket> Peek(unsigned ahead) const = 0;
/**
@brief New method of data gathering
@return A RawPacket holding the data, or 0 if no data
*/
virtual boost::shared_ptr<const RawPacket> GetData()=0;
virtual void Flush(const bool forced = false)=0;
virtual bool CheckTimeout() const = 0;
unsigned GetDataReceived() const;
virtual std::string Statistics() const = 0;
virtual std::string GetFullAddress() const = 0;
virtual void Update() {};
protected:
unsigned dataSent;
unsigned dataRecv;
};
} // namespace netcode
#endif
|