일단 이제 자잘한 버그만 고치면 될 듯?

This commit is contained in:
2025-05-04 14:31:30 +09:00
parent 63428ebf4d
commit e0a371d536
16 changed files with 908 additions and 39 deletions

View File

@@ -19,18 +19,18 @@ void IOCP::destruct() {
#endif
}
void IOCP::registerSocket(Chattr::IOCPPASSINDATA* data) {
void IOCP::registerSocket(IOCPPASSINDATA* data) {
#ifdef _WIN32
HANDLE returnData = ::CreateIoCompletionPort((HANDLE)data->socket->sock, completionPort_, data->socket->sock, 0);
if (returnData == 0)
completionPort_ = returnData;
#elif __linux__
int flags = ::fcntl(data->socket->sock, F_GETFL);
flags |= O_NONBLOCK;
fcntl(data->socket->sock, F_SETFL, flags);
// int flags = ::fcntl(data->socket->sock, F_GETFL);
// flags |= O_NONBLOCK;
// fcntl(data->socket->sock, F_SETFL, flags);
struct epoll_event ev;
ev.events = EPOLLIN | EPOLLONESHOT;
ev.events = EPOLLIN | EPOLLET | EPOLLONESHOT;
ev.data.ptr = data;
int rc = epoll_ctl(epollfd_, EPOLL_CTL_ADD, data->socket->sock, &ev);
if (rc < 0)
@@ -45,20 +45,23 @@ int IOCP::recv(Chattr::IOCPPASSINDATA* data, int bufferCount) {
return ::WSARecv(data->socket->sock, &data->wsabuf, bufferCount, &recvbytes, &flags, &data->overlapped, NULL);
#elif __linux__
struct epoll_event ev;
ev.events = EPOLLIN | EPOLLONESHOT;
ev.events = EPOLLIN | EPOLLET | EPOLLONESHOT;
ev.data.ptr = data;
return ::epoll_ctl(epollfd_, EPOLL_CTL_MOD, data->socket->sock, &ev);
#endif
}
int IOCP::send(Chattr::IOCPPASSINDATA* data, int bufferCount, int __flags) {
int IOCP::send(Chattr::IOCPPASSINDATA* data, int bufferCount, int __flags, bool client) {
data->event = IOCPEVENT::WRITE;
#ifdef _WIN32
DWORD sendbytes = 0;
return ::WSASend(data->socket->sock, &data->wsabuf, bufferCount, &sendbytes, __flags, &data->overlapped, NULL);
#elif __linux__
struct epoll_event ev;
ev.events = EPOLLOUT | EPOLLONESHOT;
if (client)
ev.events = EPOLLIN | EPOLLOUT | EPOLLET | EPOLLONESHOT;
else
ev.events = EPOLLOUT | EPOLLET | EPOLLONESHOT;
ev.data.ptr = data;
return ::epoll_ctl(epollfd_, EPOLL_CTL_MOD, data->socket->sock, &ev);
#endif

View File

@@ -10,18 +10,6 @@
namespace Chattr::log {
void setDefaultLogger(spdlog::level::level_enum logLevel, gsl::czstring logFileName, std::uint32_t logFileSize, std::uint32_t logFileCount) {
std::vector<spdlog::sink_ptr> sinks;
sinks.push_back(std::make_shared<spdlog::sinks::stdout_color_sink_mt>());
sinks.push_back(std::make_shared<spdlog::sinks::rotating_file_sink_mt>(logFileName, logFileSize, logFileCount, false));
#ifdef _WIN32
sinks.push_back(std::make_shared<spdlog::sinks::msvc_sink_mt>());
#endif
auto chatteringLogger = std::make_shared<spdlog::logger>("Chattering Logger", begin(sinks), end(sinks));
chatteringLogger->set_level(logLevel);
spdlog::set_default_logger(chatteringLogger);
}
void critical(gsl::czstring msg) {
#ifdef _WIN32
LPSTR msgbuf = nullptr;