MProto demo impl more stuff

This commit is contained in:
2024-09-26 14:05:05 -04:00
parent 9130296b83
commit 1a79045513

View File

@@ -11,6 +11,50 @@ enum MProtoMessage : u8 {
RPingPong = 103,
};
struct MProtoCall {
u8 type;
char *ping; // TPingPong, RPingPong
};
std::vector<u8> MProtoCall_Serialize(MProtoCall mpc) {
std::vector<u8> msg;
u8 sz[4];
switch (mpc.type) {
case THandShake:
case RHandShake:
*(u32*)&sz = 1;
msg.push_back(sz[0]);
msg.push_back(sz[1]);
msg.push_back(sz[2]);
msg.push_back(sz[3]);
msg.push_back(mpc.type);
break;
case TPingPong:
case RPingPong:
u8 psz[2];
*(u16*)&psz = sizeof(mpc.ping);
*(u32*)&sz = sizeof(mpc.ping) + 2;
u8 chars[sizeof(mpc.ping)];
memcpy(chars, mpc.ping, sizeof(mpc.ping));
msg.push_back(sz[0]);
msg.push_back(sz[1]);
msg.push_back(sz[2]);
msg.push_back(sz[3]);
msg.push_back(mpc.type);
msg.push_back(psz[0]);
msg.push_back(psz[1]);
for (int i =0; i<sizeof(mpc.ping); i++) {
msg.push_back(chars[i]);
}
}
return msg;
}
class MProtoServer {
private:
struct MessageLogger : private jlog::ConsoleLogger {
@@ -38,7 +82,7 @@ public:
public:
void Serve() {
try {
sock->Bind(42069);
sock->Bind(42068);
sock->Listen(5);
client = sock->Accept();
Accept();
@@ -59,10 +103,15 @@ public:
TLog(std::format("Recieved: {} Code: {}", "THandShake", (u8)THandShake));
//logger.RX("THandShake");
memset(&data, 0, 7);
data[0] = RHandShake;
//data[0] = RHandShake;
//logger.TX("RHandShake");
RLog(std::format("Sent: {} Code: {}", "RHandShake", (u8)RHandShake));
client->Send(data, sizeof data, 0);
//RLog(std::format("Sent: {} Code: {}", "RHandShake", (u8)RHandShake));
//client->Send(data, sizeof data, 0);
//MProtoCall c{RHandShake};
MProtoCall c{RPingPong, "BALLS"};
std::vector<u8> d = MProtoCall_Serialize(c);
std::cout << d.data() << std::endl;
client->Send(d.data(), d.size(), 0);
}
memset(&data, 0, 7);
}