localconnection.h

来自「这是整套横扫千军3D版游戏的源码」· C头文件 代码 · 共 62 行

H
62
字号
#ifndef _LOCALCONNECTION 
#define _LOCALCONNECTION

#include <boost/thread/mutex.hpp>
#include <deque>

#include "Connection.h"
#include "RawPacket.h"

namespace netcode {

/**
@brief Class for local connection between server / client
Directly connects to each others inputbuffer to increase performance. The server and the client have to run in one instance of spring for this to work, otherwise a normal UDP connection had to be used.
IMPORTANT: You must not have more than two instances of this
 */
class CLocalConnection : public CConnection
{
public:
	/**
	@brief Constructor
	@throw network_error When there already 2 instances
	*/
	CLocalConnection();
	virtual ~CLocalConnection();
	
	/**
	@brief Send data to other instance
	*/
	virtual void SendData(const unsigned char *data, const unsigned length);

	virtual const RawPacket* Peek(unsigned ahead) const;

	/**
	@brief Get data
	*/
	virtual RawPacket* GetData();

	/// does nothing
	virtual void Flush(const bool forced = false);
	
	/// is always false
	virtual bool CheckTimeout() const;

private:
	typedef std::deque<RawPacket*> MsgQueue;

	static MsgQueue Data[2];
	static boost::mutex Mutex[2];

	unsigned OtherInstance() const;

	/// we can have 2 Instances, one in serverNet and one in net
	static unsigned Instances;
	/// which instance we are
	unsigned instance;
};

} // namespace netcode

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?