Exemple #1
0
        /// <summary>
        /// Call this function in ReceiveEventHandler
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        public void ReceiveEventHandler(object sender, ReceiveEventArgs args)
        {
            object ret = ProcessMessage(args.SCBID, args.RemoteIPEndPoint, args.Flag, args.CableId, args.Channel, args.Event,
                                        _DataSerializer.GetObject(args.Data));

            if (ret != null)
            {
                args.ReturnData = _ReturnSerializer.GetBytes(ret);
            }
            else
            {
                args.ReturnData = null;
            }
        }
Exemple #2
0
        public static byte[] Serialize(ISerialize message)
        {
            byte[] frame = new byte[3];
            BitUtil.WriteUnsigned(ref frame, Constants.RTCM_PREAMBLE, 0, 8);
            BitUtil.WriteUnsigned(ref frame, (uint)message.ByteLength, 14, 10);

            List <byte> completeMessage = new List <byte>(frame);

            byte[] messageBytes = new byte[message.ByteLength];
            message.GetBytes(ref messageBytes);
            completeMessage.AddRange(messageBytes);

            byte[] crcBytes = BitConverter.GetBytes(CRC24Q.crc24q(completeMessage.ToArray(), completeMessage.Count, 0));
            completeMessage.Add(crcBytes[0]);
            completeMessage.Add(crcBytes[1]);
            completeMessage.Add(crcBytes[2]);

            return(completeMessage.ToArray());
        }
Exemple #3
0
        /// <summary>
        /// Synchronously sends data to the remote host specified in the RemoteIPEndPoint
        /// </summary>
        /// <param name="evt">message event</param>
        /// <param name="obj">object need to be sent</param>
        /// <param name="millisecondsTimeout">The number of milliseconds to wait, or Timeout.Infinite (-1) to wait indefinitely. </param>
        /// <param name="dataSerializer">serializer for data</param>
        /// <param name="returnSerializer">serilaizer for return data</param>
        /// <returns>object that contains the data that return from remote host</returns>
        public object SyncSend(UInt32 evt, object obj, int millisecondsTimeout, ISerialize dataSerializer, ISerialize returnSerializer)
        {
            byte[] ret = SyncSend(evt, dataSerializer.GetBytes(obj), millisecondsTimeout);

            return(returnSerializer.GetObject(ret));
        }
Exemple #4
0
        /// <summary>
        /// Synchronously sends data to the remote host specified in the RemoteIPEndPoint using Default serializer
        /// </summary>
        /// <param name="evt">message event</param>
        /// <param name="obj">object need to be sent</param>
        /// <param name="millisecondsTimeout">The number of milliseconds to wait, or Timeout.Infinite (-1) to wait indefinitely. </param>
        /// <param name="dataSerializer">serializer for data</param>
        /// <param name="returnSerializer">serilaizer for return data</param>
        /// <returns>R data type that contains the data that return from remote host</returns>
        public R SyncSend <T, R>(UInt32 evt, ref T obj, int millisecondsTimeout, ISerialize <T> dataSerializer, ISerialize <R> returnSerializer)
        {
            byte[] ret = SyncSend(evt, dataSerializer.GetBytes(ref obj), millisecondsTimeout);

            return(returnSerializer.GetObject(ret));
        }
Exemple #5
0
 /// <summary>
 /// Send asyncronization message as object
 /// </summary>
 /// <param name="evt">event</param>
 /// <param name="obj">object need to send</param>
 /// <param name="serializer">serializer</param>
 public void AsyncSend(UInt32 evt, object obj, ISerialize serializer)
 {
     AsyncSend(evt, serializer.GetBytes(obj));
 }
Exemple #6
0
 /// <summary>
 /// Send asyncronization message as object
 /// </summary>
 /// <param name="evt">event</param>
 /// <param name="obj">object need to send</param>
 /// <param name="serializer">serializer</param>
 public void AsyncSend <T>(UInt32 evt, ref T obj, ISerialize <T> serializer)
 {
     AsyncSend(evt, serializer.GetBytes(ref obj));
 }
Exemple #7
0
        /// <summary>
        /// Synchronously sends data to the remote host specified in the RemoteIPEndPoint
        /// </summary>
        /// <param name="evt">message event</param>
        /// <param name="cableId">cableId No.</param>
        /// <param name="obj">object need to be sent</param>
        /// <param name="millisecondsTimeout">The number of milliseconds to wait, or Timeout.Infinite (-1) to wait indefinitely. </param>
        /// <param name="dataSerializer">serializer for data</param>
        /// <param name="returnSerializer">serilaizer for return data</param>
        /// <returns>object that contains the data that return from remote host</returns>
        internal object SyncSend(UInt32 evt, UInt16 cableId, object obj, int millisecondsTimeout, ISerialize dataSerializer, ISerialize returnSerializer)
        {
            byte[] ret = SyncSend(evt, cableId, dataSerializer.GetBytes(obj), millisecondsTimeout);

            return(returnSerializer.GetObject(ret));
        }
Exemple #8
0
        /// <summary>
        /// Synchronously sends data to the remote host specified in the RemoteIPEndPoint
        /// </summary>
        /// <param name="evt">message event</param>
        /// <param name="obj">object need to be sent</param>
        /// <param name="millisecondsTimeout">The number of milliseconds to wait, or Timeout.Infinite (-1) to wait indefinitely. </param>
        /// <param name="serializer">serializer for data</param>
        /// <returns>object that contains the data that return from remote host</returns>
        public IDataContainer SyncSend(UInt32 evt, object obj, int millisecondsTimeout, ISerialize serializer)
        {
            byte[] ret = SyncSend(evt, 0, serializer.GetBytes(obj), millisecondsTimeout);

            return((IDataContainer)DefaultReturnSerializer.GetObject(ret));
        }