⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basesocket.h

📁 WOW 服务模拟端 支持2.4.3版本 来自开源的ASCENT 自己REPACK
💻 H
字号:
/****************************************************************************
 *
 * Multiplatform High-Performance Async Network Library
 * Socket Interface Class
 * Copyright (c) 2007 Burlex
 *
 * This file may be distributed under the terms of the Q Public License
 * as defined by Trolltech ASA of Norway and appearing in the file
 * COPYING included in the packaging of this file.
 *
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 */

#ifndef _NETLIB_BASESOCKET_H
#define _NETLIB_BASESOCKET_H

class BaseBuffer;
class BaseSocket
{
public:
	/** Virtual destructor
	 */
	virtual ~BaseSocket() {}

	/** Returns the socket's file descriptor
	 */
	inline int GetFd() { return m_fd; }

	/** Sets the socket's file descriptor
	 * @param new_fd The new file descriptor
	 */
	inline void SetFd(int new_fd) { m_fd = new_fd; }

	/** Is this socket in a read state? Or a write state?
	 */
	virtual bool Writable() = 0;

	/** Virtual OnRead() callback
	 */
	virtual void OnRead(size_t len) = 0;

	/** Virtual OnWrite() callback
	 */
	virtual void OnWrite(size_t len) = 0;

	/** Virtual OnError() callback
	 */
	virtual void OnError(int errcode) = 0;

	/** This is a windows-only implementation
	 */
	virtual void OnAccept(void * pointer) = 0;

	/** Are we connected?
	*/
	inline bool IsConnected() { return m_connected; }

	/** If for some reason we need to access the buffers directly 
	 * (shouldn't happen) these will return them
	 */
	inline BaseBuffer * GetReadBuffer() { return m_readBuffer; }
	inline BaseBuffer * GetWriteBuffer() { return m_writeBuffer; }

	/** Write mutex (so we don't post a write event twice
	 */
	volatile long m_writeLock;

	/** Disconnects the socket
	 */
	virtual void Disconnect() = 0;

	/** Deletes the socket
	 */
	virtual void Delete() = 0;

protected:
	/** This socket's file descriptor
	 */
	int m_fd;

	/** deleted/disconnected markers
	 */
	bool m_deleted;
	bool m_connected;

	/** Read (inbound) buffer
	 */
	BaseBuffer * m_readBuffer;

	/** Write (outbound) buffer
	 */
	BaseBuffer * m_writeBuffer;
};

#endif		// _NETLIB_BASESOCKET_H

⌨️ 快捷键说明

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