/// <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; } }
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()); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }