45 lines
1.2 KiB
C++
45 lines
1.2 KiB
C++
#include "Socket/TCPSocket.hpp"
|
|
#include "Socket/Log.hpp"
|
|
#include "precomp.hpp"
|
|
|
|
namespace Chattr {
|
|
|
|
void TCPSocket::init(int domain) {
|
|
init(domain, SOCK_STREAM, 0);
|
|
valid_ = true;
|
|
}
|
|
|
|
void TCPSocket::listen(int __n) {
|
|
int retVal = ::listen(sock_, __n);
|
|
if (retVal == INVALID_SOCKET)
|
|
log::critical("listen()");
|
|
}
|
|
|
|
void TCPSocket::accept(TCPSocket& newSock, Address& __addr) {
|
|
newSock.set(::accept(sock_, &__addr.addr, &__addr.length));
|
|
if (newSock == INVALID_SOCKET)
|
|
log::critical("accept()");
|
|
}
|
|
|
|
void TCPSocket::connect(Chattr::Address& serveraddr) {
|
|
int retVal = ::connect(sock_, (struct sockaddr *)&serveraddr.addr, serveraddr.length);
|
|
if (retVal == INVALID_SOCKET)
|
|
log::critical("connect()");
|
|
}
|
|
|
|
int TCPSocket::recv(void *__restrict __buf, size_t __n, int __flags) {
|
|
int retVal = ::recv(sock_, (char *)__buf, __n, __flags);
|
|
if (retVal == SOCKET_ERROR)
|
|
log::error("recv()");
|
|
return retVal;
|
|
}
|
|
|
|
int TCPSocket::send(const void *__buf, size_t __n, int __flags) {
|
|
int retVal = ::send(sock_, (char*)__buf, __n, __flags);
|
|
if (retVal == SOCKET_ERROR)
|
|
log::error("send()");
|
|
return retVal;
|
|
}
|
|
|
|
}
|