home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 March / ENTER.ISO / files / fwp-0.0.6-win32-installer.exe / PacketHandler.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2004-12-06  |  972 b   |  46 lines

  1. #include "PacketHandler.h"
  2.  
  3. #include "Network.h"
  4. #include <string.h>
  5.  
  6. UDPpacket* PacketHandler::wrapPacket(unsigned char packetType, IPaddress addr, void* data, int size){
  7.     UDPpacket* p = SDLNet_AllocPacket(size+2);
  8.  
  9.     if( p == NULL ){
  10.         return NULL;
  11.     }
  12.  
  13.     p->channel = -1;
  14.     
  15.     p->address.host = addr.host;
  16.     p->address.port = addr.port;
  17.  
  18.     p->data[0] = (unsigned char)NETWORK_FWP_PACKET_ID;
  19.     p->data[1] = packetType;
  20.     memcpy(p->data+2, data, size);
  21.     p->len = size+2;
  22.  
  23.     return p;
  24. }
  25.  
  26. bool PacketHandler::unwrapPacket(UDPpacket* packet, void* data, int size){
  27.     if(packet->len-2 > size){
  28.         return false;
  29.     }else{
  30.         memcpy(data, packet->data+2, packet->len-2);
  31.         return true;
  32.     }
  33. }
  34.  
  35. bool PacketHandler::unwrapAndFreePacket(UDPpacket* packet, void* data, int size){
  36.     bool ret = unwrapPacket(packet, data, size);
  37.  
  38.     SDLNet_FreePacket(packet);
  39.  
  40.     return ret;
  41. }
  42.  
  43. void PacketHandler::freePacket(UDPpacket* packet){
  44.     SDLNet_FreePacket(packet);
  45. }
  46.