public ClientResponse(ICommMessage message, IClientNode client) { Message = message; Clients = new List <IClientNode>() { client }; }
/// <summary> /// Serializes message to a byte array and returns it. /// </summary> /// <param name="message"></param> /// <returns></returns> private byte[] SerializeMessage(ICommMessage message) { using (var ms = new MemoryStream()) { _serializer.Serialize(ms, message); return(ms.ToArray()); } }
/// <summary> /// Takes in an unmapped ICommMessage and maps + routes it to subscribers. /// </summary> /// <param name="message"></param> public void Publish(ICommMessage message) { if (!_routes.ContainsKey(message.PayloadType)) { _logger.Log("Unknown message type in router. " + message.PayloadType, LogLevel.Error); return; } _routes[message.PayloadType](message); }
/// <summary> /// Serializes an ICommMessage by mapping to Protobuf, then serializing. /// </summary> /// <param name="message">ICommMessage to map and serialize.</param> /// <returns>Raw byte array of serialized Protobuf message.</returns> public byte[] SerializePayload(ICommMessage message) { switch (message.PayloadType) { case TodoMessageTypes.PositionUpdateData: return(MapAndGetBytesFromProto <PositionUpdate, PositionUpdateProto>(message)); } // Todo: Throw custom exceptions. throw new Exception("Serialization exception"); }
/// <summary> /// Sends message to the receiver on the given channel. /// </summary> /// <param name="receiverName"></param> /// <param name="channel"></param> /// <param name="message"></param> public void Send(string receiverName, string channel, ICommMessage message) { var buffer = this.SerializeMessage(message); if (_clients.TryGetValue(receiverName, out var client)) { client.Send(buffer); } else if (_connections.TryGetValue(receiverName, out var conn)) { conn.Send(buffer); } else { throw new ArgumentException($"There is no communicator with the name '{receiverName}'."); } }
public SocketServer(ICommMessage EventReport) { _EventReport = EventReport; ThreadPool.QueueUserWorkItem(new WaitCallback(StartListening)); }
public void Publish(ICommMessage message) { _clientRequestRouter.Publish(message); }
/// <summary> /// Serializes an ICommMessage to a serialize Protobuf byte array, by mapping, /// Serializing, and creating a RawMessageContainer for transport. /// </summary> /// <param name="message">ICommMessage instance to </param> /// <returns>Serialized bytes.</returns> public byte[] SerializeMessageContainer(ICommMessage message) { return(SerializeMessageContainer(message.PayloadType, SerializePayload(message))); }
public byte[] MapAndGetBytesFromProto <TSource, TDestination>(ICommMessage message) where TSource : ICommMessage where TDestination : IExtensible { return(GetBytesFromProto <TDestination>(Mapper.Map <TSource, TDestination>((TSource)message))); }
public void SendMessage(ICommMessage message) { }
public ClientResponse(ICommMessage message, IEnumerable <IClientNode> clients) { Message = message; Clients = clients; }
public GUICmdCtrl(ICommMessage EventReport) { _EventReport = EventReport; ThreadPool.QueueUserWorkItem(new WaitCallback(StartListening)); }
public GUICmdCtrl() { _EventReport = this; Marco._EventReport = this; }
public MessageContainer(MessageTypes type, ICommMessage message) { Type = type; Message = message; }
/// <summary> /// Sends object to the receiver. /// </summary> /// <param name="receiverName"></param> /// <param name="message"></param> public void Send(string receiverName, ICommMessage message) => this.Send(receiverName, null, message);