Fixed message ordering issues

This commit is contained in:
Yousef Khadadeh 2025-10-02 19:10:58 +03:00
parent 61e0b2ff24
commit cda773915e
8 changed files with 48 additions and 29 deletions

View file

@ -341,13 +341,20 @@ void NetLibrary::channel_created_in_client(std::shared_ptr<rtc::DataChannel> cha
}
}
std::string NetLibrary::attach_message_order_and_update(MessageOrder& order, const std::string& message) {
bool NetLibrary::is_ordered_channel(std::string_view channelName) {
return channelName == RELIABLE_COMMAND_CHANNEL || channelName == UNRELIABLE_COMMAND_CHANNEL;
}
MessageOrder NetLibrary::calc_order_for_queued_message(std::string_view channelName, MessageOrder& mOrder) {
return is_ordered_channel(channelName) ? mOrder++ : 0;
}
std::string NetLibrary::attach_message_order(MessageOrder order, const std::string& message) {
union {
MessageOrder o;
char b[sizeof(MessageOrder)];
} u;
u.o = (std::endian::native == std::endian::little) ? std::byteswap(order) : order;
order++;
return std::string(u.b, sizeof(MessageOrder)) + message;
}