Advertisement
Guest User

Untitled

a guest
Apr 9th, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. void write_string_size(ENetPacket * packet, string & str)
  2. {
  3.     auto data = (char*)packet->data + packet->dataLength;
  4.    
  5.     using u16 = unsigned short;
  6.     auto p = (u16*)data;
  7.     *p = (u16)str.size();
  8.     packet->dataLength += sizeof(u16);
  9. }
  10.  
  11. void write_string_content(ENetPacket * packet, string & str)
  12. {
  13.     auto data = (char*)packet->data + packet->dataLength;
  14.  
  15.     memcpy(data, &str[0], str.size());
  16.     packet->dataLength += str.size();
  17. }
  18.  
  19. void write_string(ENetPacket * packet, string & str)
  20. {
  21.     write_string_size(packet, str);
  22.     write_string_content(packet, str);
  23. }
  24.  
  25. void example(ENetPeer * peer, vector<string> & some_strings)
  26. {
  27.     auto packet = enet_packet_create(nullptr, 512, ENET_PACKET_FLAG_RELIABLE);
  28.     packet->dataLength = 0;
  29.    
  30.     //We assume the total size of all strings won't be > 512
  31.     for(auto & str : some_strings)
  32.     {
  33.         write_string(packet, str);
  34.     }
  35.     enet_peer_send(peer, 0, packet);
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement