자잘한 수정, 이제 다른 소켓으로 쓰기 요청 할 수 있을 듯
This commit is contained in:
@@ -7,7 +7,7 @@ namespace Chattr {
|
||||
|
||||
void IOCP::registerSocket(Chattr::IOCPPASSINDATA* data) {
|
||||
#ifdef _WIN32
|
||||
HANDLE returnData = ::CreateIoCompletionPort((HANDLE)data->socket.sock, completionPort_, data->socket.sock, 0);
|
||||
HANDLE returnData = ::CreateIoCompletionPort((HANDLE)data->socket->sock, completionPort_, data->socket->sock, 0);
|
||||
if (returnData == 0)
|
||||
completionPort_ = returnData;
|
||||
#elif __linux__
|
||||
@@ -24,10 +24,10 @@ void IOCP::registerSocket(Chattr::IOCPPASSINDATA* data) {
|
||||
#endif
|
||||
}
|
||||
|
||||
int IOCP::recv(Chattr::IOCPPASSINDATA* data) {
|
||||
int IOCP::recv(Chattr::IOCPPASSINDATA* data, int bufferCount) {
|
||||
#ifdef _WIN32
|
||||
DWORD recvbytes = 0, flags = 0;
|
||||
return ::WSARecv(data->socket.sock, &data->wsabuf, 1, &recvbytes, &flags, &data->overlapped, NULL);
|
||||
return ::WSARecv(data->socket->sock, &data->wsabuf, bufferCount, &recvbytes, &flags, &data->overlapped, NULL);
|
||||
#elif __linux__
|
||||
struct epoll_event ev;
|
||||
ev.events = EPOLLIN | EPOLLONESHOT;
|
||||
@@ -36,10 +36,10 @@ int IOCP::recv(Chattr::IOCPPASSINDATA* data) {
|
||||
#endif
|
||||
}
|
||||
|
||||
int IOCP::send(Chattr::IOCPPASSINDATA* data, int __flags) {
|
||||
int IOCP::send(Chattr::IOCPPASSINDATA* data, int bufferCount, int __flags) {
|
||||
#ifdef _WIN32
|
||||
DWORD sendbytes = 0;
|
||||
return ::WSASend(data->socket.sock, &data->wsabuf, 1, &sendbytes, __flags, &data->overlapped, NULL);
|
||||
return ::WSASend(data->socket->sock, &data->wsabuf, bufferCount, &sendbytes, __flags, &data->overlapped, NULL);
|
||||
#elif __linux__
|
||||
struct epoll_event ev;
|
||||
ev.events = EPOLLOUT | EPOLLONESHOT;
|
||||
|
||||
@@ -80,12 +80,24 @@ int Socket::sendto(const void *__buf, size_t __n, int __flags, struct Address __
|
||||
return retVal;
|
||||
}
|
||||
|
||||
Socket::Socket(const Socket& other_) {
|
||||
memcpy(this, &other_, sizeof(Socket));
|
||||
valid_ = false;
|
||||
}
|
||||
|
||||
Socket::Socket(Socket &&other_) noexcept {
|
||||
other_.valid_ = false;
|
||||
memcpy(this, &other_, sizeof(Socket));
|
||||
valid_ = true;
|
||||
}
|
||||
|
||||
Socket& Socket::operator=(const Socket& other_) {
|
||||
memcpy(this, &other_, sizeof(Socket));
|
||||
valid_ = false;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
Socket& Socket::operator=(Socket && other_) noexcept {
|
||||
other_.valid_ = false;
|
||||
memcpy(this, &other_, sizeof(Socket));
|
||||
|
||||
Reference in New Issue
Block a user