Example #1
0
 public ClientResponse(ICommMessage message, IClientNode client)
 {
     Message = message;
     Clients = new List <IClientNode>()
     {
         client
     };
 }
Example #2
0
 /// <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);
        }
Example #4
0
        /// <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");
        }
Example #5
0
        /// <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}'.");
            }
        }
Example #6
0
 public SocketServer(ICommMessage EventReport)
 {
     _EventReport = EventReport;
     ThreadPool.QueueUserWorkItem(new WaitCallback(StartListening));
 }
Example #7
0
 public void Publish(ICommMessage message)
 {
     _clientRequestRouter.Publish(message);
 }
Example #8
0
 /// <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)));
 }
Example #9
0
 public byte[] MapAndGetBytesFromProto <TSource, TDestination>(ICommMessage message)
     where TSource : ICommMessage
     where TDestination : IExtensible
 {
     return(GetBytesFromProto <TDestination>(Mapper.Map <TSource, TDestination>((TSource)message)));
 }
Example #10
0
 public void SendMessage(ICommMessage message)
 {
 }
Example #11
0
 public ClientResponse(ICommMessage message, IEnumerable <IClientNode> clients)
 {
     Message = message;
     Clients = clients;
 }
Example #12
0
 public GUICmdCtrl(ICommMessage EventReport)
 {
     _EventReport = EventReport;
     ThreadPool.QueueUserWorkItem(new WaitCallback(StartListening));
 }
Example #13
0
 public GUICmdCtrl()
 {
     _EventReport       = this;
     Marco._EventReport = this;
 }
 public MessageContainer(MessageTypes type, ICommMessage message)
 {
     Type    = type;
     Message = message;
 }
Example #15
0
 /// <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);