Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove fixed buffer size from logger (+ run clang-format) #1

Merged
merged 1 commit into from
Jun 20, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 42 additions & 32 deletions source/server/logger.cpp
Original file line number Diff line number Diff line change
@@ -1,49 +1,51 @@
#include "logger.hpp"
#include "helpers.hpp"
#include "nn/result.h"
#include "nn/util.h"
#include "nx/svc.h"

Logger* Logger::sInstance = nullptr;

void Logger::createInstance() {
#ifdef SERVERIP
#ifdef SERVERIP
sInstance = new Logger(TOSTRING(SERVERIP), 3080, "MainLogger");
#else
#else
sInstance = new Logger(0, 3080, "MainLogger");
#endif
#endif
}

nn::Result Logger::init(const char* ip, u16 port) {

sock_ip = ip;

this->port = port;
in_addr hostAddress = { 0 };
sockaddr serverAddress = { 0 };

in_addr hostAddress = {0};
sockaddr serverAddress = {0};

if (this->socket_log_state != SOCKET_LOG_UNINITIALIZED)
return -1;

nn::nifm::Initialize();
nn::nifm::SubmitNetworkRequest();

while (nn::nifm::IsNetworkRequestOnHold()) { }
while (nn::nifm::IsNetworkRequestOnHold()) {
}

// emulators make this return false always, so skip it during init
#ifndef EMU
// emulators make this return false always, so skip it during init
#ifndef EMU

if (!nn::nifm::IsNetworkAvailable()) {
this->socket_log_state = SOCKET_LOG_UNAVAILABLE;
return -1;
}

#endif
#endif

if ((this->socket_log_socket = nn::socket::Socket(2, 1, 0)) < 0) {
this->socket_log_state = SOCKET_LOG_UNAVAILABLE;
return -1;
}

nn::socket::InetAton(this->sock_ip, &hostAddress);

serverAddress.address = hostAddress;
Expand All @@ -52,19 +54,21 @@ nn::Result Logger::init(const char* ip, u16 port) {

nn::Result result;

if ((result = nn::socket::Connect(this->socket_log_socket, &serverAddress, sizeof(serverAddress))).isFailure()) {
if ((result =
nn::socket::Connect(this->socket_log_socket, &serverAddress, sizeof(serverAddress)))
.isFailure()) {
this->socket_log_state = SOCKET_LOG_UNAVAILABLE;
return result;
}

this->socket_log_state = SOCKET_LOG_CONNECTED;

this->isDisableName = false;

return 0;
}

void Logger::log(const char *fmt, va_list args) { // impl for replacing seads system::print
void Logger::log(const char* fmt, va_list args) { // impl for replacing seads system::print
if (!sInstance)
return;
char buf[0x500];
Expand All @@ -73,7 +77,7 @@ void Logger::log(const char *fmt, va_list args) { // impl for replacing seads sy
}
}

s32 Logger::read(char *out) {
s32 Logger::read(char* out) {
return this->socket_read_char(out);
}

Expand All @@ -83,29 +87,35 @@ void Logger::log(const char* fmt, ...) {
va_list args;
va_start(args, fmt);

char buf[0x500];

if (nn::util::VSNPrintf(buf, sizeof(buf), fmt, args) > 0) {
if (!sInstance->isDisableName) {
char prefix[0x510];
nn::util::SNPrintf(prefix, sizeof(prefix), "[%s] %s", sInstance->sockName, buf);
sInstance->socket_log(prefix);
} else {
sInstance->socket_log(buf);
}
size_t bufSize = nn::util::VSNPrintf(nullptr, 0, fmt, args);
size_t prefixSize = bufSize += 3 /* "[] " */ + strlen(sInstance->sockName);
if (!sInstance->isDisableName)
bufSize += prefixSize;
char buf[bufSize];

if (sInstance->isDisableName)
nn::util::VSNPrintf(buf, bufSize, fmt, args);
else {
nn::util::VSNPrintf(buf + prefixSize, bufSize - prefixSize, fmt, args);
nn::util::SNPrintf(buf, prefixSize, "[%s] ", sInstance->sockName);
}

sInstance->socket_log(buf);
#ifdef EMU
svcOutputDebugString(buf, bufSize);
#endif

va_end(args);
}

bool Logger::pingSocket() {
return socket_log("ping") > 0; // if value is greater than zero, than the socket recieved our message, otherwise the connection was lost.
return socket_log("ping") > 0; // if value is greater than zero, than the socket recieved our
// message, otherwise the connection was lost.
}

void tryInitSocket() {
__asm("STR X20, [X8,#0x18]");
#ifdef DEBUGLOG
#ifdef DEBUGLOG
Logger::createInstance(); // creates a static instance for debug logger
#endif
#endif
}