Advertisement
Guest User

Untitled

a guest
Jan 30th, 2015
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.58 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace PartyZ1Packet
  7. {
  8.  
  9.         public enum PacketType : byte
  10.         {
  11.             Request, Response
  12.         }
  13.  
  14.         public enum PacketRequestCommand : byte
  15.         {
  16.             RequestError, CreateChannel, JoinChannel, LeaveChannel, UpdatePosition, UpdateIcon, CreatePOI, DeletePOI
  17.         }
  18.  
  19.         public enum PacketResponseCommand : byte
  20.         {
  21.             ResponseError, Welcome, ChannelCreated, JoinedChannel, LeftChannel
  22.         }
  23.  
  24.         //General Packets
  25.         public class GeneralPacket
  26.         {
  27.             public PacketType packetType;
  28.             public int packetDataSize;
  29.             public byte[] packetData;
  30.  
  31.             //Constructor
  32.             public GeneralPacket()
  33.             {
  34.  
  35.             }
  36.  
  37.             public GeneralPacket(ref byte[] serializedData)
  38.             {
  39.                 GeneralPacket generalPacket = new GeneralPacket();
  40.                 GeneralPacket.DeserializeData(ref serializedData, ref generalPacket);
  41.  
  42.                 packetType = generalPacket.packetType;
  43.                 packetDataSize = generalPacket.packetDataSize;
  44.                 packetData = generalPacket.packetData;
  45.  
  46.             }
  47.  
  48.             //Serialization / Deserialisation
  49.             public byte[] SerializeData()
  50.             {
  51.                 byte[] serializedData = new Byte[sizeof(PacketType)];
  52.                 serializedData[0] = (byte)packetType;
  53.  
  54.                 Array.Resize(ref serializedData, serializedData.Length + sizeof(int));
  55.                 Array.Copy(BitConverter.GetBytes(packetData.Length), 0, serializedData, 1, sizeof(int));
  56.  
  57.                 Array.Resize(ref serializedData, serializedData.Length + packetData.Length);
  58.                 Array.Copy(packetData, 0, serializedData, sizeof(PacketType) + sizeof(int), packetData.Length);
  59.  
  60.                 return serializedData;
  61.             }
  62.  
  63.             static public bool DeserializeData(ref byte[] serializedData, ref GeneralPacket generalPacket)
  64.             {
  65.                 try
  66.                 {
  67.                     generalPacket = new GeneralPacket();
  68.                     generalPacket.packetType = (PacketType)serializedData[0];
  69.  
  70.                     byte[] byteArray = new byte[4];
  71.                     Array.Copy(serializedData, 1, byteArray, 0, sizeof(int));
  72.                     generalPacket.packetDataSize = BitConverter.ToInt32(byteArray, 0);
  73.  
  74.                     generalPacket.packetData = new byte[generalPacket.packetDataSize];
  75.                     Array.Copy(serializedData, sizeof(byte) + sizeof(int), generalPacket.packetData, 0, generalPacket.packetDataSize);
  76.  
  77.                     return true;
  78.                 }
  79.                 catch
  80.                 {
  81.                    return false;
  82.                 }
  83.             }
  84.         }
  85.  
  86.         public class RequestPacket
  87.         {
  88.             public PacketRequestCommand packetRequestCommand;
  89.             public int packetDataSize;
  90.             public byte[] packetData;
  91.  
  92.             //Constructor
  93.             public RequestPacket()
  94.             {
  95.  
  96.             }
  97.  
  98.             public RequestPacket(ref byte[] serializedData)
  99.             {
  100.                 RequestPacket requestPacket = new RequestPacket();
  101.                 RequestPacket.DeserializeData(ref serializedData, ref requestPacket);
  102.  
  103.                 packetRequestCommand = requestPacket.packetRequestCommand;
  104.                 packetDataSize = requestPacket.packetDataSize;
  105.                 packetData = requestPacket.packetData;
  106.  
  107.             }
  108.  
  109.             //Serialization / Deserialisation
  110.             public byte[] SerializeData()
  111.             {
  112.                 byte[] serializedData = new Byte[sizeof(PacketRequestCommand)];
  113.                 serializedData[0] = (byte)packetRequestCommand;
  114.  
  115.                 Array.Resize(ref serializedData, serializedData.Length + sizeof(int));
  116.                 Array.Copy(BitConverter.GetBytes(packetData.Length), 0, serializedData, 1, sizeof(int));
  117.  
  118.                 Array.Resize(ref serializedData, serializedData.Length + packetData.Length);
  119.                 Array.Copy(packetData, 0, serializedData, sizeof(PacketType) + sizeof(int), packetData.Length);
  120.  
  121.                 return serializedData;
  122.             }
  123.  
  124.             static public bool DeserializeData(ref byte[] serializedData, ref RequestPacket requestPacket)
  125.             {
  126.                 try
  127.                 {
  128.                     requestPacket = new RequestPacket();
  129.                     requestPacket.packetRequestCommand = (PacketRequestCommand)serializedData[0];
  130.  
  131.                     byte[] byteArray = new byte[4];
  132.                     Array.Copy(serializedData, 1, byteArray, 0, sizeof(int));
  133.                     requestPacket.packetDataSize = BitConverter.ToInt32(byteArray, 0);
  134.  
  135.                     requestPacket.packetData = new byte[requestPacket.packetDataSize];
  136.                     Array.Copy(serializedData, sizeof(byte) + sizeof(int), requestPacket.packetData, 0, requestPacket.packetDataSize);
  137.  
  138.                     return true;
  139.                 }
  140.                 catch
  141.                 {
  142.                     return false;
  143.                 }
  144.             }
  145.         }
  146.  
  147.         public class ResponsePacket
  148.         {
  149.             public PacketResponseCommand packetResponseCommand;
  150.             public int packetDataSize;
  151.             public byte[] packetData;
  152.  
  153.             //Constructor
  154.             public ResponsePacket()
  155.             {
  156.  
  157.             }
  158.  
  159.             public ResponsePacket(ref byte[] serializedData)
  160.             {
  161.                 ResponsePacket responsePacket = new ResponsePacket();
  162.                 ResponsePacket.DeserializeData(ref serializedData, ref responsePacket);
  163.  
  164.                 packetResponseCommand = responsePacket.packetResponseCommand;
  165.                 packetDataSize = responsePacket.packetDataSize;
  166.                 packetData = responsePacket.packetData;
  167.  
  168.             }
  169.  
  170.             //Serialization / Deserialisation
  171.             public byte[] SerializeData()
  172.             {
  173.                 byte[] serializedData = new Byte[sizeof(PacketResponseCommand)];
  174.                 serializedData[0] = (byte)packetResponseCommand;
  175.  
  176.                 Array.Resize(ref serializedData, serializedData.Length + sizeof(int));
  177.                 Array.Copy(BitConverter.GetBytes(packetData.Length), 0, serializedData, 1, sizeof(int));
  178.  
  179.                 Array.Resize(ref serializedData, serializedData.Length + packetData.Length);
  180.                 Array.Copy(packetData, 0, serializedData, sizeof(PacketType) + sizeof(int), packetData.Length);
  181.  
  182.                 return serializedData;
  183.             }
  184.  
  185.             static public bool DeserializeData(ref byte[] serializedData, ref ResponsePacket responsePacket)
  186.             {
  187.                 try
  188.                 {
  189.                     responsePacket = new ResponsePacket();
  190.                     responsePacket.packetResponseCommand = (PacketResponseCommand)serializedData[0];
  191.  
  192.                     byte[] byteArray = new byte[4];
  193.                     Array.Copy(serializedData, 1, byteArray, 0, sizeof(int));
  194.                     responsePacket.packetDataSize = BitConverter.ToInt32(byteArray, 0);
  195.  
  196.                     responsePacket.packetData = new byte[responsePacket.packetDataSize];
  197.                     Array.Copy(serializedData, sizeof(byte) + sizeof(int), responsePacket.packetData, 0, responsePacket.packetDataSize);
  198.  
  199.                     return true;
  200.                 }
  201.                 catch
  202.                 {
  203.                     return false;
  204.                 }
  205.             }
  206.         }
  207.  
  208.         //Specific Packets
  209.  
  210.    
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement