C4Grey

С# AMF Serialization

Jan 15th, 2014
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.10 KB | None | 0 0
  1. public void OnReceive(IAsyncResult AResult)
  2.         {
  3.             Console.WriteLine("Receiving data...");
  4.             SocketState vState = (SocketState)AResult.AsyncState;
  5.             Socket vClient = vState.Client;
  6.             if (vClient != null)
  7.             {
  8.                 if (!vClient.Connected)
  9.                 {
  10.                     Console.WriteLine("Client was disconnected");
  11.                     RemoveClient(vState);
  12.                 }
  13.                 else
  14.                 {
  15.                     Console.WriteLine("Reading data...");
  16.                     int vRead = 0;
  17.                     try
  18.                     {
  19.                         vRead = vClient.EndReceive(AResult);
  20.                     }
  21.                     catch (Exception e)
  22.                     {
  23.                         Console.WriteLine(e.Message);
  24.                     }
  25.  
  26.                     if (vRead > 0)                    
  27.                     {                        
  28.                         vState.CopyData(vRead);                                                
  29.                         vState.DataBuffer.Position = 0;
  30.  
  31.                         CommonMessage vReceived;                        
  32.  
  33.                         while (vState.HaveData)
  34.                         {
  35.                             vReceived = null;
  36.                             try
  37.                             {
  38.                                 vReceived = (CommonMessage)vState.ReadData();                                
  39.                             }
  40.                             catch (Exception e)
  41.                             {
  42.                                Console.WriteLine("Error in AMF decoding: " + e.Message);                              
  43.                                break;
  44.                             }
  45.                             finally
  46.                             {
  47.                                 if (vReceived != null)
  48.                                 {
  49.                                     ProcessMessage(vReceived, vState);                                  
  50.  
  51.                                     if (!vState.HaveData)
  52.                                         vState.Reset();
  53.                                 }
  54.                                 else
  55.                                 {
  56.                                     Console.WriteLine("Object was not received");
  57.                                 }
  58.                             }
  59.                         }
  60.                         vClient.BeginReceive(vState.Buffer, 0, SocketState.BUFFER_SIZE, SocketFlags.None, new AsyncCallback(OnReceive), vState);
  61.                     }
  62.                     else
  63.                     {
  64.                         Console.WriteLine("Reading zero");
  65.                         if (FOnDisconnect != null)
  66.                             FOnDisconnect(vClient);
  67.                         RemoveClient(vState);
  68.                         vClient.Close();
  69.                     }
  70.                 }
  71.             }
  72.             else
  73.             {
  74.                 Console.WriteLine("Client was not assigned or disconnected");
  75.                 RemoveClient(vState);
  76.             }
  77.         }
Advertisement
Add Comment
Please, Sign In to add comment