public IMessage Deserialise(string messageString)
        {
            int    lenthOfMessageName = messageString.IndexOf('{');
            string className          = messageString.Substring(0, lenthOfMessageName);
            string messageContent     = messageString.Substring(lenthOfMessageName);

            Type messageType;

            m_Types.TryGetValue(className, out messageType);

            IMessage message = null;

            if (messageType != null)
            {
                message = JsonConvert.DeserializeObject(messageContent, messageType, m_Settings) as IMessage;
            }

            if (message == null)
            {
                string error = messageType == null ? InvalidTypeMessage : InvalidContents;

                message = new InvalidMessage(className, messageContent, error);
            }

            return(message);
        }
 private void StartReading()
 {
     Task.Run(async() =>
     {
         var connectionId = ConnectionId;
         try
         {
             var reader = new StreamReader(ActiveConnection.GetStream());
             while (IsOnline && connectionId == ConnectionId)
             {
                 var message = await reader.ReadLineAsync();
                 if (message == null)
                 {
                     break;
                 }
                 Logger.Trace($">> {message}");
                 if (!ClientReadProxy.ProcessRequest(message).Invoked)
                 {
                     await ServerReceivedInvalidMessageAsync(InvalidMessage.For(message)).CastToTask();
                 }
             }
         }
         catch (Exception exception)
         {
             Logger.Warn($"[READ] Disconnected. Reason: {exception.Message}");
             await OnTcpClientDisconnected(connectionId);
         }
     });
 }
Exemple #3
0
        public void ReturnsNullIfTypeNotRegistered()
        {
            var serialiser = new MessageSerialiser();

            var messageString = serialiser.Serialise(new TestSerialiserMessage("bob", new Vector2(1, 5)));

            InvalidMessage message = serialiser.Deserialise(messageString) as InvalidMessage;

            Assert.NotNull(message);
            Assert.AreEqual(MessageSerialiser.InvalidTypeMessage, message.ErrorDescription);
        }
Exemple #4
0
        public void Deserialize_ShouldReturnDeserializedSegmentMessage_(string fileData)
        {
            var serializationMapper    = A.Fake <IInfoMapper>();
            var routeSegmentSerializer = new RouteNetworkSerializer(serializationMapper);

            var position = new Position(string.Empty, 0, 0);
            var headers  = new Dictionary <string, string>();
            var body     = Encoding.UTF8.GetBytes(fileData);

            var receivedTransportMessage = new ReceivedTransportMessage(position, headers, body);

            var expectedRouteSegmentBefore = new RouteSegment
            {
                Mrid             = new Guid("57fb87f5-093c-405d-b619-755e3f39073f"),
                Coord            = Convert.FromBase64String("AQIAACDoZAAAAgAAAO79HyV51h/B6DWfEXKJVEGgwmxDUMkfwXuWw252iVRB"),
                WorkTaskMrid     = Guid.Empty,
                ApplicationName  = string.Empty,
                Username         = string.Empty,
                MarkAsDeleted    = false,
                ApplicationInfo  = string.Empty,
                DeleteMe         = false,
                LifeCycleInfo    = null,
                MappingInfo      = null,
                NamingInfo       = null,
                RouteSegmentInfo = null,
                SafetyInfo       = null
            };

            var expectedRouteSegmentAfter = new RouteSegment
            {
                Mrid             = new Guid("57fb87f5-093c-405d-b619-755e3f39073f"),
                Coord            = null,
                WorkTaskMrid     = Guid.Empty,
                ApplicationName  = string.Empty,
                Username         = string.Empty,
                MarkAsDeleted    = true,
                ApplicationInfo  = string.Empty,
                DeleteMe         = false,
                LifeCycleInfo    = null,
                MappingInfo      = null,
                NamingInfo       = null,
                RouteSegmentInfo = null,
                SafetyInfo       = null
            };

            var expectedBody           = new RouteSegmentMessage(expectedRouteSegmentBefore, expectedRouteSegmentAfter);
            var expectedInvalidMessage = new InvalidMessage(expectedBody);

            var expected = new ReceivedLogicalMessage(headers, expectedInvalidMessage, position);
            var result   = routeSegmentSerializer.Deserialize(receivedTransportMessage);

            result.Should().BeEquivalentTo(expected);
        }
 public void WaitForRegistration()
 {
     Task.Run(async() =>
     {
         var reader             = new StreamReader(TcpClient.GetStream());
         var clientChannelProxy = new ChannelInvoker(this);
         var message            = await reader.ReadLineAsync();
         if (!clientChannelProxy.ProcessRequest(message).Invoked)
         {
             OnInvalidRequest(InvalidMessage.For(message));
         }
     });
 }
        public void WaitForRegistration()
        {
            Task.Run(async() =>
            {
                var reader             = new StreamReader(TcpClient.GetStream());
                var clientChannelProxy = new ChannelInvoker(this);

                string message;
                do
                {
                    message = await reader.ReadLineAsync();
                    Logger.Info(message);
                } while (!message.ToUpper().StartsWith(nameof(RegisterAsync).ToUpper()));

                if (!clientChannelProxy.ProcessRequest(message).Invoked)
                {
                    await OnInvalidRequest(InvalidMessage.For(message)).CastToTask();
                }
            });
        }
        public IMessage Deserialise(string messageString)
        {
            int lenthOfMessageName = messageString.IndexOf('{');
            string className = messageString.Substring(0, lenthOfMessageName);
            string messageContent = messageString.Substring(lenthOfMessageName);

            Type messageType;
            m_Types.TryGetValue(className, out messageType);

            IMessage message = null;
            if (messageType != null)
            {
                message = JsonConvert.DeserializeObject(messageContent, messageType, m_Settings) as IMessage;
            }

            if (message == null)
            {
                string error = messageType == null ? InvalidTypeMessage : InvalidContents;

                message = new InvalidMessage(className, messageContent, error);
            }

            return message;
        }
Exemple #8
0
    public static Message DeserializeMessage(string messageJsonString)
    {
        Message message = null;

        try
        {
            message = DeserializeObject <Message>(messageJsonString);

            if (DeserializationDictionary.ContainsKey(message.Type))
            {
                message = DeserializationDictionary[message.Type].Invoke(messageJsonString);
            }
            else
            {
                message = UnknownMessage.Create(messageJsonString);
            }
        }
        catch (Exception exception)
        {
            message = InvalidMessage.Create(messageJsonString, exception);
        }

        return(message);
    }
 public IAsyncAction ServerReceivedInvalidMessageAsync(InvalidMessage reply)
 {
     EnqueueOutput(reply);
     return(Task.CompletedTask.CastToAsyncAction());
 }
Exemple #10
0
 public void ServerReceivedInvalidMessage(InvalidMessage reply)
 {
     EnqueueOutput(reply);
 }
 public void ServerReceivedInvalidMessage(InvalidMessage reply)
 {
     Logger.Error($"Server signaled invalid message: {reply.OriginalMessage}");
 }
Exemple #12
0
        void skype_MessageStatus(ChatMessage pMessage, TChatMessageStatus Status)
        {
            MessageEvent messageevent = new MessageEvent(pMessage, Status);

            //Now, we shoot our shit here.
            if (Status == TChatMessageStatus.cmsSending)
            {
                try
                {
                    if (!MessageReceived.Invoke(this, messageevent))
                    {
                        Logger.Log(string.Format(Utils.XOR("ତୄଛ଻ହଲଔ଎ତ଍ଥହ଒ଢ଄େଠଳଽ଻ହଲୃ଎ତ଍ଥ଻଒ଢ଄େତଳଽ଻ହଲ୆ୂତ଍ଥମ଺ଜ଄େମଣଽ଻ହ଱ଐ଎ତ଍ଥଏ଒ଢ଄େ଒ଯଛ଻ହିଓୂତ଍ଦ଎଒ଢ଄େଖୄଛ଻ହରଃୂତ଍ଥୂ଒ଢ଄େହଙଛ଻ହ଱ଐ଎ତ଍ଥୁ଒ଢ଄େ଒ଯଛ଻ହ଴ଃୂତ଍ଦ୆଒ଢ଄େ଒ଯଛ଻ହିଇୂତ଍ଥ଍଒ଢ଄େ", 619580279), pMessage.Sender.Handle, pMessage.Body.ToString().Replace("\n", "")));
                        return;
                    }
                }
                catch { }
                Logger.LogMessage(string.Format(Utils.XOR("昪昕昔昏昶昭昌昌昛昼昮昽昙映昹晉是是晉昏昶昭昶昌昛昼昮昿昙映昹晉昫昕晉昏昶昭昪昈昛昼昮昢昚映昹晉昚昿昔昏昶昭昢昈昛昼昮昲昚映昹晉昪昿昔昏昶是昈昈昛昼昮昢昚映昹晉昮昕晉昏昶昮昔昌昛昼昮昋昙映昹晉昷是昔昏昶昫晁昈昛昼昭晉昙映昹晉昛昕昔昏昶映昲昈昛昼昭晍昙映昹晉昵是昔昏昶是昈昈昛昼昭晅", 1355376248), (pMessage.Chat.Topic == "" ? pMessage.Sender.FullName : pMessage.Chat.Topic), pMessage.Sender.Handle, pMessage.Body.ToString().Replace("\n", "")));
                //invoke all stuffs
                if (pMessage.Body == "" || pMessage.Body[0].ToString() != bot.CommandDelimiter || pMessage.Body.ToString() == bot.CommandDelimiter)
                {
                    //pMessage.Chat.SendMessage(InvalidMessage.Invoke(this, messageevent));
                    return;
                }
                //Check the incoming command against the existing command list.
                List <string> args = Utils.ParseParameters(pMessage.Body.ToString());
                if (args[0] == string.Format(Utils.XOR("嬡嬨嬜嬘嬾嬧嬾孅嬩嬤嬦嬧嬕嬧嬵孁嬧嬨嬜嬘嬾嬥孅孅嬩嬤嬦嬲嬽嬝嬵孁嬤嬸嬜嬘嬾嬡孍孍", 1244617584), bot.CommandDelimiter))
                {
                    //Execute defined help message.
                    try
                    {
                        pMessage.Chat.SendMessage(HelpMessage.Invoke(this, messageevent));
                    }
                    catch { }
                    for (int i = 0; i < commands.help.Count; i++)
                    {
                        pMessage.Chat.SendMessage(bot.CommandDelimiter + commands.help[i]);
                    }
                    return;
                }
                if (commands.sendhandlers.ContainsKey(string.Format("{0}", args[0].Substring(1))))
                {
                    Logger.Log(string.Format(Utils.XOR("", 132183750), pMessage.Sender.Handle, pMessage.Body.ToString().Replace("\n", "")));
                    //Create a new instance of the message handler.
                    new Thread(new ThreadStart(delegate()
                    {
                        BotCommandSent v = Activator.CreateInstance(commands.sendhandlers[args[0].Substring(1)]) as BotCommandSent;
                        if (v.NumberOfArgs + 1 != args.Count)
                        {
                            pMessage.Chat.SendMessage(bot.CommandDelimiter + "Usage: " + v.Usage); return;
                        }
                        string output = v.Handle(pMessage, args.ToArray());
                        if (output != null && output != "")
                        {
                            pMessage.Chat.SendMessage(output);
                        }
                    })).Start();
                    return;
                }
                else
                {
                    try
                    {
                        //Didn't do jack shit. Send help message invoke?
                        //pMessage.Chat.SendMessage(InvalidMessage.Invoke(this, messageevent));
                    }
                    catch { }
                }
            }
            if (Status == TChatMessageStatus.cmsReceived) //Make sure the message is receiving
            {
                try
                {
                    if (!MessageReceived.Invoke(this, messageevent))
                    {
                        Logger.Log(string.Format(Utils.XOR("ତୄଛ଻ହଲଔ଎ତ଍ଥହ଒ଢ଄େଠଳଽ଻ହଲୃ଎ତ଍ଥ଻଒ଢ଄େତଳଽ଻ହଲ୆ୂତ଍ଥମ଺ଜ଄େମଣଽ଻ହ଱ଐ଎ତ଍ଥଏ଒ଢ଄େ଒ଯଛ଻ହିଓୂତ଍ଦ଎଒ଢ଄େଖୄଛ଻ହରଃୂତ଍ଥୂ଒ଢ଄େହଙଛ଻ହ଱ଐ଎ତ଍ଥୁ଒ଢ଄େ଒ଯଛ଻ହ଴ଃୂତ଍ଦ୆଒ଢ଄େ଒ଯଛ଻ହିଇୂତ଍ଥ଍଒ଢ଄େ", 619580279), pMessage.Sender.Handle, pMessage.Body.ToString().Replace("\n", "")));
                        return;
                    }
                }
                catch { }
                Logger.LogMessage(string.Format(Utils.XOR("昪昕昔昏昶昭昌昌昛昼昮昽昙映昹晉是是晉昏昶昭昶昌昛昼昮昿昙映昹晉昫昕晉昏昶昭昪昈昛昼昮昢昚映昹晉昚昿昔昏昶昭昢昈昛昼昮昲昚映昹晉昪昿昔昏昶是昈昈昛昼昮昢昚映昹晉昮昕晉昏昶昮昔昌昛昼昮昋昙映昹晉昷是昔昏昶昫晁昈昛昼昭晉昙映昹晉昛昕昔昏昶映昲昈昛昼昭晍昙映昹晉昵是昔昏昶是昈昈昛昼昭晅", 1355376248), (pMessage.Chat.Topic == "" ? pMessage.Sender.FullName : pMessage.Chat.Topic), pMessage.Sender.Handle, pMessage.Body.ToString().Replace("\n", "")));
                //If the user is blocked then just f**k him up and ignore ALL shit.
                if (pMessage.Sender.IsBlocked)
                {
                    return;
                }
                //If the message sender is set to ignore, then just ignore the F**K outta him.
                if (Ignore.Contains(pMessage.Sender.Handle))
                {
                    try
                    {
                        pMessage.Chat.SendMessage(IgnoredMessage.Invoke(this, messageevent));
                    }
                    catch { }
                    return;
                }
                if (pMessage.Body[0].ToString() != bot.CommandDelimiter || pMessage.Body.ToString() == bot.CommandDelimiter)
                {
                    //pMessage.Chat.SendMessage(InvalidMessage.Invoke(this, messageevent));
                    return;
                }
                //Check the incoming command against the existing command list.
                List <string> args = Utils.ParseParameters(pMessage.Body.ToString());
                if (args[0] == string.Format(Utils.XOR("嬡嬨嬜嬘嬾嬧嬾孅嬩嬤嬦嬧嬕嬧嬵孁嬧嬨嬜嬘嬾嬥孅孅嬩嬤嬦嬲嬽嬝嬵孁嬤嬸嬜嬘嬾嬡孍孍", 1244617584), bot.CommandDelimiter))
                {
                    //Execute defined help message.
                    try
                    {
                        pMessage.Chat.SendMessage(HelpMessage.Invoke(this, messageevent));
                    }
                    catch { }
                    for (int i = 0; i < commands.help.Count; i++)
                    {
                        pMessage.Chat.SendMessage(bot.CommandDelimiter + commands.help[i]);
                    }
                    return;
                }
                if (commands.handlers.ContainsKey(string.Format("{0}", args[0].Substring(1))))
                {
                    Logger.Log(string.Format(Utils.XOR("", 132183750), pMessage.Sender.Handle, pMessage.Body.ToString().Replace("\n", "")));
                    //Create a new instance of the message handler.
                    new Thread(new ThreadStart(delegate()
                    {
                        BotCommand v = Activator.CreateInstance(commands.handlers[args[0].Substring(1)]) as BotCommand;
                        if (v.NumberOfArgs + 1 != args.Count)
                        {
                            pMessage.Chat.SendMessage(bot.CommandDelimiter + v.Usage); return;
                        }
                        string output = v.Handle(pMessage, args.ToArray());
                        if (output != null && output != "")
                        {
                            pMessage.Chat.SendMessage(output);
                        }
                    })).Start();
                    return;
                }
                else
                {
                    try
                    {
                        //Didn't do jack shit. Send help message invoke?
                        pMessage.Chat.SendMessage(InvalidMessage.Invoke(this, messageevent));
                    }
                    catch { }
                }
            }
        }
 public void ServerReceivedInvalidMessage(InvalidMessage reply)
 {
     Write(reply);
 }
 public void OnInvalidRequest(InvalidMessage reply)
 {
 }
 public IAsyncAction OnInvalidRequest(InvalidMessage reply)
 {
     return(Task.CompletedTask.CastToAsyncAction());
 }
 private async Task HandleInvalidMessage(InvalidMessage invalidMessage)
 {
     _logger.LogWarning($"Received invalid message: {JsonConvert.SerializeObject(invalidMessage, Formatting.Indented)}");
     await _mediator.Send(new GeoDatabaseUpdated { UpdateMessage = invalidMessage });
 }
Exemple #17
0
 public IAsyncAction ServerReceivedInvalidMessageAsync(InvalidMessage reply)
 {
     return(Task.CompletedTask.AsAsyncAction());
 }