🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Pointless entry #3

posted in DruinkJournal
Published April 16, 2007
Advertisement
Yay, I'm "Done" with my network code. As in, it works and I don't think I need any more functionality immediately. So, for hilarity, have some headers.

ENetworkClient.h:
//============================================================================// ENetworkClient.h - Network client. Handles one connection//============================================================================#ifndef __ENETWORKCLIENT_H__#define __ENETWORKCLIENT_H__#include "ESP/ESP.h"#include "EIP.h"#include class ENetworkClient : public ERefCounted{public:	typedef ESP SP;	ENetworkClient() : m_nLocalPort(0), m_nRemotePort(0) {}	virtual ~ENetworkClient() {}	//========================================================================	// Return the number of bytes pending in the read buffer	virtual size_t GetBufferSize() const = 0;	// Returns if this client is [still] connected	virtual bool IsConnected() const = 0;	// Extract some bytes from the read buffer. Returns the number of bytes	// extracted.	virtual size_t ExtractBuffer(void* pBuffer, size_t nNumBytes) = 0;	// Send data to a client	virtual void Send(const void* pBuffer, size_t nNumBytes) = 0;	void Send(const std::string& str) { Send(str.c_str(), str.length()); }	void Send(const std::wstring& str) { Send(str.c_str(), str.length()*2); }	//========================================================================	// Return connection info	const EIP& GetRemoteIP() const { return m_ip; }	unsigned short GetRemotePort() const { return m_nRemotePort; }	unsigned short GetLocalPort() const { return m_nLocalPort; }protected:	EIP	m_ip;	unsigned short m_nLocalPort;	unsigned short m_nRemotePort;};#endif // __ENETWORKCLIENT_H__


ENetworkServer.h:
//============================================================================// ENetworkServer.h - Network server class. Handles network connections on// one port//============================================================================#ifndef __ENETWORKSERVER_H__#define __ENETWORKSERVER_H__#include "ESP/ESP.h"#include "ENetworkClient.h"class ENetworkServer : public ERefCounted{public:	typedef ESP SP;	ENetworkServer() {}	virtual ~ENetworkServer() {}	//========================================================================	// Get the next pending connection. Will return null if no connections pending	virtual ENetworkClient::SP GetNextConnection() = 0;};#endif // __ENETWORKSERVER_H__


ENetworkMgr.h:
//============================================================================// ENetworkMgr.h - Network manager class//============================================================================#ifndef __ENETWORKMGR_H__#define __ENETWORKMGR_H__#include "ENetworkServer.h"class ENetworkMgr{public:	// Protocol for network connections	enum Protocol	{		PROTO_TCP,		PROTO_UDP	};	ENetworkMgr() {}	virtual ~ENetworkMgr() {}	// Singleton access	static ENetworkMgr& Get() { return *ms_pInstance; }	static void Destroy() { delete ms_pInstance; ms_pInstance=0; }	//========================================================================	// Start a server listening on a specified port	virtual ENetworkServer::SP CreateServer(unsigned short nPort, Protocol eProto) = 0;	// Perform one update	virtual void Tick() = 0;protected:	static ENetworkMgr*	ms_pInstance;};#endif // __ENETWORKMGR_H__


And finally, EIP.h:
//============================================================================// EIP.h - IP address wrapper class//============================================================================#ifndef __EIP_H__#define __EIP_H__#include class EIP{public:	EIP() { m_ip.nIP=0; }	~EIP() {}	//========================================================================	// Get / set raw IP address	unsigned int GetIP() const { return m_ip.nIP; }	void SetIP(unsigned int nIP) { m_ip.nIP = nIP; }	// Get IP address as a XXX.XXX.XXX.XXX string	std::wstring ToString() const;	//========================================================================private:	struct IPQuad	{		unsigned char a, b, c, d;	};	union {		IPQuad ip;		unsigned int nIP;	} m_ip;};#endif // __EIP_H__

As the title says, pointless. But it works anyway. The ESP and ERefCounted stuff is my smart pointer code before you ask. And now, I'm going for an early night.
Previous Entry Untitled
Next Entry Untitled
0 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement
Advertisement