コード例 #1
0
        /// <summary>
        /// Serializes an operation response.
        /// </summary>
        /// <param name="stream">The stream.</param>
        /// <param name="operationResponse"> The operation response.</param>
        /// <exception cref="T:System.IO.InvalidDataException">
        /// A value can not be serialized.
        ///</exception>
        ///<exception cref="T:System.ArrayTypeMismatchException">
        ///  A collection with different types can not be serialized.
        ///</exception>
        private static void SerializeOperationResponse(Stream stream, OperationResponse operationResponse)
        {
            if (operationResponse.Parameters != null)
            {
                if (operationResponse.Parameters.Remove(0xf4))
                {
                    log.WarnFormat("SendOperationResponse - removed reserved parameter {1} from operation response {0}", new object[] { operationResponse.OperationCode, (byte)0xf4 });
                }
                if (operationResponse.Parameters.Remove(0))
                {
                    log.WarnFormat("SendOperationResponse - removed reserved parameter {1} from operation response {0}", new object[] { operationResponse.OperationCode, (byte)0 });
                }
                if (operationResponse.Parameters.Remove(1))
                {
                    log.WarnFormat("SendOperationResponse - removed reserved parameter {1} from operation response {0}", new object[] { operationResponse.OperationCode, (byte)1 });
                }
            }
            IBinaryWriter writer = new BigEndianBinaryWriter(stream);
            bool          flag   = !string.IsNullOrEmpty(operationResponse.DebugMessage);
            bool          flag2  = operationResponse.Parameters != null;
            int           num    = flag2 ? operationResponse.Parameters.Count : 0;

            num += flag ? 3 : 2;
            writer.WriteInt16((short)num);
            writer.WriteByte(0xf4);
            GpBinaryByteWriter.Write(writer, operationResponse.OperationCode);
            writer.WriteByte(0);
            GpBinaryByteWriter.Write(writer, (int)operationResponse.ReturnCode);
            if (flag)
            {
                writer.WriteByte(1);
                GpBinaryByteWriter.Write(writer, operationResponse.DebugMessage);
            }
            if (flag2)
            {
                foreach (KeyValuePair <byte, object> pair in operationResponse.Parameters)
                {
                    writer.WriteByte(pair.Key);
                    GpBinaryByteWriter.Write(writer, pair.Value);
                }
            }
        }
コード例 #2
0
        /// <summary>
        ///  Serializes an operation request.
        /// </summary>
        /// <param name="stream">The stream.</param>
        /// <param name="operationRequest"> The operation request.</param>
        /// <exception cref="T:System.IO.InvalidDataException">
        /// A value can not be serialized.
        ///</exception>
        ///<exception cref="T:System.ArrayTypeMismatchException">
        ///  A collection with different types can not be serialized.
        ///</exception>
        private static void SerializeOperationRequest(Stream stream, OperationRequest operationRequest)
        {
            IBinaryWriter writer = new BigEndianBinaryWriter(stream);

            writer.WriteByte(operationRequest.OperationCode);
            writer.WriteBoolean(false);
            if (operationRequest.Parameters != null)
            {
                writer.WriteInt16((short)operationRequest.Parameters.Count);
                foreach (KeyValuePair <byte, object> pair in operationRequest.Parameters)
                {
                    writer.WriteByte(pair.Key);
                    GpBinaryByteWriter.Write(writer, pair.Value);
                }
            }
            else
            {
                writer.WriteInt16(0);
            }
        }
コード例 #3
0
        /// <summary>
        /// serializes the event data to a stream.
        /// </summary>
        /// <param name="stream">The stream.</param>
        /// <param name="eventData">The event data.</param>
        private void SerializeEventData(ReusableMemoryStream stream, IEventData eventData)
        {
            if ((eventData.Parameters != null) && eventData.Parameters.Remove(0xf4))
            {
                log.WarnFormat("SendEvent - removed reserved parameter {1} from event {0}", new object[] { eventData.Code, (byte)0xf4 });
            }
            BigEndianBinaryWriter writer = new BigEndianBinaryWriter(stream);

            stream.Seek((long)this.headerSize, SeekOrigin.Begin);
            bool flag = eventData.Parameters != null;
            int  num  = flag ? (eventData.Parameters.Count + 1) : 1;

            writer.WriteInt16((short)num);
            writer.WriteByte(0xf4);
            GpBinaryByteWriter.Write(writer, eventData.Code);
            if (flag)
            {
                foreach (KeyValuePair <byte, object> pair in eventData.Parameters)
                {
                    writer.WriteByte(pair.Key);
                    GpBinaryByteWriter.Write(writer, pair.Value);
                }
            }
        }
コード例 #4
0
        private static void SerializeEventData(ReusableMemoryStream stream, IEventData eventData)
        {
            BigEndianBinaryWriter binaryWriter = new BigEndianBinaryWriter(stream);

            GpBinaryByteWriter.WriteEventData(binaryWriter, eventData);
        }
コード例 #5
0
        public void Serialize(Stream stream, object obj)
        {
            BigEndianBinaryWriter writer = new BigEndianBinaryWriter(stream);

            GpBinaryByteWriter.Write(writer, obj);
        }
コード例 #6
0
        private static void SerializeOperationResponse(Stream stream, OperationResponse operationResponse)
        {
            IBinaryWriter writer = new BigEndianBinaryWriter(stream);

            GpBinaryByteWriter.WriteOperationResponse(writer, operationResponse);
        }
コード例 #7
0
        private static void SerializeOperationRequest(Stream stream, OperationRequest operationRequest)
        {
            IBinaryWriter writer = new BigEndianBinaryWriter(stream);

            GpBinaryByteWriter.WriteOperationRequest(writer, operationRequest);
        }