Ejemplo n.º 1
0
 /// <summary>
 /// Serializes an <see cref="T:Photon.SocketServer.OperationResponse"/>.
 /// </summary>
 /// <param name="operationResponse">The operation response to serialize.</param>
 /// <returns>The serialized operation response.</returns>
 public byte[] SerializeOperationResponse(OperationResponse operationResponse)
 {
     using (ReusableMemoryStream stream = new ReusableMemoryStream())
     {
         BigEndianBinaryWriter binaryWriter = new BigEndianBinaryWriter(stream);
         stream.Position = this.headerSize;
         binaryWriter.WriteByte(operationResponse.OperationCode);
         binaryWriter.WriteInt16(operationResponse.ReturnCode);
         if (string.IsNullOrEmpty(operationResponse.DebugMessage))
         {
             binaryWriter.WriteByte(0x2a);
         }
         else
         {
             binaryWriter.WriteByte(0x73);
             binaryWriter.WriteUTF(operationResponse.DebugMessage);
         }
         if ((operationResponse.Parameters == null) || (operationResponse.Parameters.Count == 0))
         {
             binaryWriter.WriteInt16(0);
         }
         else
         {
             binaryWriter.WriteInt16((short)operationResponse.Parameters.Count);
             Amf3Writer writer2 = new Amf3Writer(binaryWriter);
             foreach (KeyValuePair <byte, object> pair in operationResponse.Parameters)
             {
                 writer2.WriteInteger((long)((ulong)pair.Key));
                 writer2.Write(pair.Value);
             }
         }
         stream.Position = 0L;
         this.headerWriter.WriteHeader(stream, RtsMessageType.OperationResponse, false);
         return(stream.ToArray());
     }
 }