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

📄 socket.h

📁 模仿wiondws写的linux/freeBSD系统的IOCP
💻 H
字号:
#ifndef _SOCKET_H
#define _SOCKET_H
#include "cmd.h"
#include "cirbuf.h"
#include "iocp/iocomplete.h"
#include "utility/lock.h"
#include <list>

class ksocket
{
public:
	ksocket(SockHandle sockdl):sockdl(sockdl),canRecv(true),canSend(true){}

	ksocket():canRecv(true),canSend(true){}

	Cmd *unpack();

	int recv(unsigned int size);

	int send(char *buf,unsigned int size);

	void setCanRecv()
	{
		Scope_lock scope_lock(lock);
		canRecv = true;
	}
	
	void setCanSend()
	{
		Scope_lock scope_lock(lock);
		canSend = true;
	}

	unsigned int put(const char *buffer,unsigned int size)
	{
		Scope_lock scope_lock(lock);
		return recv_buf.put(buffer,size);
	}

	


private:
	IO_CONTEXT io_context[2];
	SockHandle sockdl;
	bool canRecv;
	bool canSend;

	cirbuf<40960>   recv_buf;//接受缓冲
	char sendbuf[40960];
	char recvbuf[40960];

	Lock lock;

	//std::list<Cmd*> send_que;//等待发送的数据包
};


#endif

⌨️ 快捷键说明

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