MProto demo impl more stuff
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user