working commit
This commit is contained in:
+2
-2
@@ -10,12 +10,12 @@ int main(int argc, char** argv) {
|
|||||||
UxClient client;
|
UxClient client;
|
||||||
auto connectRes = client.Connect("127.0.0.1", 1025);
|
auto connectRes = client.Connect("127.0.0.1", 1025);
|
||||||
if (!connectRes) {
|
if (!connectRes) {
|
||||||
uxlogger.Log(connectRes.error());
|
uxlogger.Error(connectRes.error());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
auto runRes = client.Run();
|
auto runRes = client.Run();
|
||||||
if (!runRes) {
|
if (!runRes) {
|
||||||
uxlogger.Log(runRes.error());
|
uxlogger.Error(runRes.error());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@ std::expected<void, std::string> Run() {
|
|||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
auto runRes = Run();
|
auto runRes = Run();
|
||||||
if (!runRes) {
|
if (!runRes) {
|
||||||
uxlogger.Log(runRes.error());
|
uxlogger.Error(runRes.error());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
+13
-13
@@ -46,19 +46,19 @@ void SocketHandler::Handle(int newsock, std::string laddr, std::string raddr, st
|
|||||||
std::thread recvThr(&SocketHandler::RecvMessages, this);
|
std::thread recvThr(&SocketHandler::RecvMessages, this);
|
||||||
recvThr.detach();
|
recvThr.detach();
|
||||||
{
|
{
|
||||||
uxlogger.Log(std::format("Send debug empty message"));
|
uxlogger.Debug(std::format("Send debug empty message"));
|
||||||
MessageHeader header(0);
|
MessageHeader header(0);
|
||||||
auto rawHeader = header.Encode();
|
auto rawHeader = header.Encode();
|
||||||
int wsize;
|
int wsize;
|
||||||
if ((wsize = write(sock, rawHeader.data(), rawHeader.size())) < 0) {
|
if ((wsize = write(sock, rawHeader.data(), rawHeader.size())) < 0) {
|
||||||
int errnoCopy = errno;
|
int errnoCopy = errno;
|
||||||
std::string error = std::strerror(errnoCopy);
|
std::string error = std::strerror(errnoCopy);
|
||||||
uxlogger.Log(std::format("Write message error: {}", error));
|
uxlogger.Error(std::format("Write message error: {}", error));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
uxlogger.Log(std::format("Send address message"));
|
uxlogger.Debug(std::format("Send address message"));
|
||||||
uxcontrol::AddressMessage addrMsg;
|
uxcontrol::AddressMessage addrMsg;
|
||||||
auto meta = addrMsg.mutable_meta();
|
auto meta = addrMsg.mutable_meta();
|
||||||
meta->set_kind(tunAddressMsg);
|
meta->set_kind(tunAddressMsg);
|
||||||
@@ -77,7 +77,7 @@ void SocketHandler::Handle(int newsock, std::string laddr, std::string raddr, st
|
|||||||
if ((wsize = write(sock, rawPacket.data(), rawPacket.size())) < 0) {
|
if ((wsize = write(sock, rawPacket.data(), rawPacket.size())) < 0) {
|
||||||
int errnoCopy = errno;
|
int errnoCopy = errno;
|
||||||
std::string error = std::strerror(errnoCopy);
|
std::string error = std::strerror(errnoCopy);
|
||||||
uxlogger.Log(std::format("Write message error: {}", error));
|
uxlogger.Error(std::format("Write message error: {}", error));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -96,7 +96,7 @@ void SocketHandler::Handle(int newsock, std::string laddr, std::string raddr, st
|
|||||||
auto network = networkRes.value();
|
auto network = networkRes.value();
|
||||||
auto prefix = prefixRes.value();
|
auto prefix = prefixRes.value();
|
||||||
|
|
||||||
uxlogger.Log(std::format("Send route message for {}/{}", network, prefix));
|
uxlogger.Info(std::format("Send route message for {}/{}", network, prefix));
|
||||||
uxcontrol::RouteMessage routeMsg;
|
uxcontrol::RouteMessage routeMsg;
|
||||||
auto meta = routeMsg.mutable_meta();
|
auto meta = routeMsg.mutable_meta();
|
||||||
meta->set_kind(localRouteMsg);
|
meta->set_kind(localRouteMsg);
|
||||||
@@ -115,7 +115,7 @@ void SocketHandler::Handle(int newsock, std::string laddr, std::string raddr, st
|
|||||||
if ((wsize = write(sock, rawPacket.data(), rawPacket.size())) < 0) {
|
if ((wsize = write(sock, rawPacket.data(), rawPacket.size())) < 0) {
|
||||||
int errnoCopy = errno;
|
int errnoCopy = errno;
|
||||||
std::string error = std::strerror(errnoCopy);
|
std::string error = std::strerror(errnoCopy);
|
||||||
uxlogger.Log(std::format("Write message error: {}", error));
|
uxlogger.Error(std::format("Write message error: {}", error));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ void SocketHandler::Handle(int newsock, std::string laddr, std::string raddr, st
|
|||||||
sendThr.detach();
|
sendThr.detach();
|
||||||
|
|
||||||
done.acquire();
|
done.acquire();
|
||||||
uxlogger.Log("Handler done");
|
uxlogger.Debug("Handler done");
|
||||||
}
|
}
|
||||||
|
|
||||||
void SocketHandler::SendMessages(void) {
|
void SocketHandler::SendMessages(void) {
|
||||||
@@ -163,7 +163,7 @@ void SocketHandler::SendMessages(void) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
done.release();
|
done.release();
|
||||||
uxlogger.Log("Send messages done");
|
uxlogger.Info("Send messages done");
|
||||||
}
|
}
|
||||||
|
|
||||||
void SocketHandler::RecvMessages(void) {
|
void SocketHandler::RecvMessages(void) {
|
||||||
@@ -173,17 +173,17 @@ void SocketHandler::RecvMessages(void) {
|
|||||||
if ((rsize = recv(sock, rawHeader.data(), rawHeader.size(), MSG_WAITALL)) < 0) {
|
if ((rsize = recv(sock, rawHeader.data(), rawHeader.size(), MSG_WAITALL)) < 0) {
|
||||||
int errnoCopy = errno;
|
int errnoCopy = errno;
|
||||||
std::string error = std::strerror(errnoCopy);
|
std::string error = std::strerror(errnoCopy);
|
||||||
uxlogger.Log(std::format("Read header error: {}", error));
|
uxlogger.Error(std::format("Read header error: {}", error));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (rsize < msgHeaderSize) {
|
if (rsize < msgHeaderSize) {
|
||||||
uxlogger.Log(std::format("Read only {} from {} header bytes", rsize, msgHeaderSize));
|
uxlogger.Error(std::format("Read only {} from {} header bytes", rsize, msgHeaderSize));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
MessageHeader header;
|
MessageHeader header;
|
||||||
auto decodeRes = header.Decode(rawHeader);
|
auto decodeRes = header.Decode(rawHeader);
|
||||||
if (!decodeRes) {
|
if (!decodeRes) {
|
||||||
uxlogger.Log(std::format("Decode header error: {}", decodeRes.error()));
|
uxlogger.Error(std::format("Decode header error: {}", decodeRes.error()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
auto pSize = header.PayloadSize();
|
auto pSize = header.PayloadSize();
|
||||||
@@ -194,7 +194,7 @@ void SocketHandler::RecvMessages(void) {
|
|||||||
if ((rsize = recv(sock, rawMessage.data(), rawMessage.size(), MSG_WAITALL)) < 0) {
|
if ((rsize = recv(sock, rawMessage.data(), rawMessage.size(), MSG_WAITALL)) < 0) {
|
||||||
int errnoCopy = errno;
|
int errnoCopy = errno;
|
||||||
std::string error = std::strerror(errnoCopy);
|
std::string error = std::strerror(errnoCopy);
|
||||||
uxlogger.Log(std::format("Read message error: {}", error));
|
uxlogger.Error(std::format("Read message error: {}", error));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
uxcontrol::SimpleMessage simpleMsg;
|
uxcontrol::SimpleMessage simpleMsg;
|
||||||
@@ -218,5 +218,5 @@ void SocketHandler::RecvMessages(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
done.release();
|
done.release();
|
||||||
uxlogger.Log("Recv messages done");
|
uxlogger.Info("Recv messages done");
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-11
@@ -87,22 +87,21 @@ void UxClient::RecvMessages(void) {
|
|||||||
std::string rawHeader(msgHeaderSize, 0);
|
std::string rawHeader(msgHeaderSize, 0);
|
||||||
if ((rsize = recv(sock, rawHeader.data(), rawHeader.size(), MSG_WAITALL)) < 0) {
|
if ((rsize = recv(sock, rawHeader.data(), rawHeader.size(), MSG_WAITALL)) < 0) {
|
||||||
int errnoCopy = errno;
|
int errnoCopy = errno;
|
||||||
uxlogger.Log(std::format("Read0 header error: {}", errno));
|
|
||||||
std::string error = std::strerror(errnoCopy);
|
std::string error = std::strerror(errnoCopy);
|
||||||
uxlogger.Log(std::format("Read header error: {}", error));
|
uxlogger.Error(std::format("Read header error: {}", error));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (rsize < msgHeaderSize) {
|
if (rsize < msgHeaderSize) {
|
||||||
uxlogger.Log(std::format("Read only {} from {} bytes", rsize, msgHeaderSize));
|
uxlogger.Error(std::format("Read only {} from {} bytes", rsize, msgHeaderSize));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
MessageHeader header;
|
MessageHeader header;
|
||||||
auto decodeRes = header.Decode(rawHeader);
|
auto decodeRes = header.Decode(rawHeader);
|
||||||
if (!decodeRes) {
|
if (!decodeRes) {
|
||||||
uxlogger.Log(std::format("Decode header error: {}", decodeRes.error()));
|
uxlogger.Error(std::format("Decode header error: {}", decodeRes.error()));
|
||||||
}
|
}
|
||||||
auto pSize = header.PayloadSize();
|
auto pSize = header.PayloadSize();
|
||||||
uxlogger.Log(std::format("Receive message with size {}", pSize));
|
uxlogger.Error(std::format("Receive message with size {}", pSize));
|
||||||
if (pSize == 0) {
|
if (pSize == 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -111,14 +110,14 @@ void UxClient::RecvMessages(void) {
|
|||||||
if ((rsize = recv(sock, rawMessage.data(), rawMessage.size(), MSG_WAITALL)) < 0) {
|
if ((rsize = recv(sock, rawMessage.data(), rawMessage.size(), MSG_WAITALL)) < 0) {
|
||||||
int errnoCopy = errno;
|
int errnoCopy = errno;
|
||||||
std::string error = std::strerror(errnoCopy);
|
std::string error = std::strerror(errnoCopy);
|
||||||
uxlogger.Log(std::format("Read message error: {}", error));
|
uxlogger.Error(std::format("Read message error: {}", error));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
uxcontrol::SimpleMessage meta;
|
uxcontrol::SimpleMessage meta;
|
||||||
meta.ParseFromString(rawMessage);
|
meta.ParseFromString(rawMessage);
|
||||||
auto metaPart = meta.meta();
|
auto metaPart = meta.meta();
|
||||||
auto kind = metaPart.kind();
|
auto kind = metaPart.kind();
|
||||||
uxlogger.Debug(std::format("Received message kind of {}", kind));
|
uxlogger.Debug(std::format("Received message kind: {}", kind));
|
||||||
|
|
||||||
if (kind == tunAddressMsg) {
|
if (kind == tunAddressMsg) {
|
||||||
uxcontrol::AddressMessage addrMessage;
|
uxcontrol::AddressMessage addrMessage;
|
||||||
@@ -176,7 +175,8 @@ void UxClient::SendMessages(void) {
|
|||||||
while (true) {
|
while (true) {
|
||||||
auto readRes = interface.Read();
|
auto readRes = interface.Read();
|
||||||
if (!readRes) {
|
if (!readRes) {
|
||||||
uxlogger.Log(std::format("Read packet error: {}", readRes.error()));
|
uxlogger.Error(std::format("Read packet error: {}", readRes.error()));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
auto packet = readRes.value();
|
auto packet = readRes.value();
|
||||||
|
|
||||||
@@ -199,10 +199,10 @@ void UxClient::SendMessages(void) {
|
|||||||
if ((wsize = send(sock, rawPacket.data(), rawPacket.size(), 0)) < 0) {
|
if ((wsize = send(sock, rawPacket.data(), rawPacket.size(), 0)) < 0) {
|
||||||
int errnoCopy = errno;
|
int errnoCopy = errno;
|
||||||
std::string error = std::strerror(errnoCopy);
|
std::string error = std::strerror(errnoCopy);
|
||||||
uxlogger.Log(std::format("Write packet error: {}", error));
|
uxlogger.Error(std::format("Write packet error: {}", error));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
uxlogger.Log("Send message");
|
uxlogger.Debug("Send internet message");
|
||||||
}
|
}
|
||||||
done.release();
|
done.release();
|
||||||
return;
|
return;
|
||||||
@@ -247,7 +247,7 @@ std::expected<void, std::string> UxClient::Run(void) {
|
|||||||
recvThr.detach();
|
recvThr.detach();
|
||||||
|
|
||||||
done.acquire();
|
done.acquire();
|
||||||
uxlogger.Log("Client done");
|
uxlogger.Info("Client done");
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-16
@@ -15,21 +15,7 @@ UxLogger uxlogger;
|
|||||||
|
|
||||||
static std::mutex mtx;
|
static std::mutex mtx;
|
||||||
|
|
||||||
UxLogger::UxLogger(const std::string ilabel) {
|
UxLogger::UxLogger(void) {}
|
||||||
label = ilabel;
|
|
||||||
}
|
|
||||||
|
|
||||||
UxLogger::UxLogger(void) {
|
|
||||||
label = "global";
|
|
||||||
}
|
|
||||||
|
|
||||||
void UxLogger::Log(const std::string& message) {
|
|
||||||
auto now = std::chrono::system_clock::now();
|
|
||||||
std::chrono::zoned_time localnow{std::chrono::current_zone(), now};
|
|
||||||
std::string timenow = std::format("{:%Y-%m-%dT%H:%M:%OS%Z}", localnow);
|
|
||||||
std::lock_guard<std::mutex> lock(mtx);
|
|
||||||
std::cout << std::format("{} {} {}\n", timenow, label, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
void UxLogger::Debug(const std::string& message) {
|
void UxLogger::Debug(const std::string& message) {
|
||||||
LogLevel("debug", message);
|
LogLevel("debug", message);
|
||||||
@@ -52,6 +38,6 @@ void UxLogger::LogLevel(const std::string level, const std::string& message) {
|
|||||||
std::chrono::zoned_time localnow{std::chrono::current_zone(), now};
|
std::chrono::zoned_time localnow{std::chrono::current_zone(), now};
|
||||||
std::string timenow = std::format("{:%Y-%m-%dT%H:%M:%OS%Z}", localnow);
|
std::string timenow = std::format("{:%Y-%m-%dT%H:%M:%OS%Z}", localnow);
|
||||||
std::lock_guard<std::mutex> lock(mtx);
|
std::lock_guard<std::mutex> lock(mtx);
|
||||||
std::cout << std::format("{} {} {} {}\n", timenow, level, label, message);
|
std::cout << std::format("{} [{}] {}\n", timenow, level, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,9 +13,7 @@ private:
|
|||||||
std::string label;
|
std::string label;
|
||||||
void LogLevel(const std::string level, const std::string& message);
|
void LogLevel(const std::string level, const std::string& message);
|
||||||
public:
|
public:
|
||||||
UxLogger(std::string ilabel);
|
|
||||||
UxLogger();
|
UxLogger();
|
||||||
void Log(const std::string& message);
|
|
||||||
void Debug(const std::string& message);
|
void Debug(const std::string& message);
|
||||||
void Info(const std::string& message);
|
void Info(const std::string& message);
|
||||||
void Warning(const std::string& message);
|
void Warning(const std::string& message);
|
||||||
|
|||||||
Reference in New Issue
Block a user