コード例 #1
0
        public void HandleEvent(object sender, MulticastMessageEventArgs args)
        {
            if ((this.HandleMessage != null) && (args != null))
            {
                string jsonString = args.JsonString;

                if (!string.IsNullOrEmpty(jsonString))
                {
                    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
                    {
                        try
                        {
                            JsonRpcResponse          response     = (JsonRpcResponse)this.deserializer.ReadObject(ms);
                            JsonRpcResponseEventArgs responseArgs = new JsonRpcResponseEventArgs();
                            responseArgs.Response = response;
                            this.HandleMessage(this, responseArgs);
                        }
                        catch (SerializationException)
                        {
                            return;
                        }
                    }
                }
            }
        }
コード例 #2
0
        public void HandleEvent(object sender, MulticastMessageEventArgs args)
        {
            if ((this.HandleMessage != null) && (args != null))
            {
                string           jsonString = args.JsonString;
                NetworkInterface incomingIF = args.IncomingInterface;

                if (!string.IsNullOrEmpty(jsonString))
                {
                    Announce announce = this.cache.Get(jsonString);
                    if (announce == null)
                    {
                        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
                        {
                            try
                            {
                                announce = (Announce)this.deserializer.ReadObject(ms);
                                if (MandatoryKeysPresent(announce))
                                {
                                    announce.JsonString = jsonString;
                                    announce.IdentifyCommunicationPath(incomingIF);
                                    this.cache.Add(jsonString, announce);
                                    this.eventArgs.Announce = announce;
                                    this.HandleMessage(this, this.eventArgs);
                                }
                            }
                            catch (SerializationException)
                            {
                                return;
                            }
                        }
                    }
                    else
                    {
                        this.eventArgs.Announce = announce;
                        this.HandleMessage(this, this.eventArgs);
                    }
                }
            }
        }
コード例 #3
0
        public void SendMessage(string json)
        {
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
            {
                switch (this.response)
                {
                default:
                case ResponseType.responseSuccess:
                {
                    ConfigurationRequest request   = (ConfigurationRequest)this.deserializer.ReadObject(ms);
                    string responseString          = "{\"jsonrpc\":\"2.0\",\"id\":\"" + request.QueryId + "\",\"result\":true}";
                    MulticastMessageEventArgs args = new MulticastMessageEventArgs();
                    args.JsonString = responseString;
                    this.parser.HandleEvent(null, args);
                }

                break;

                case ResponseType.noResponse:
                    break;

                case ResponseType.responseError:
                {
                    ConfigurationRequest request   = (ConfigurationRequest)this.deserializer.ReadObject(ms);
                    string responseString          = "{\"jsonrpc\":\"2.0\",\"id\":\"" + request.QueryId + "\",\"error\":{\"code\": -32602, \"data\": \"error\", \"message\": \"Invalid method parameters\"}}";
                    MulticastMessageEventArgs args = new MulticastMessageEventArgs();
                    args.JsonString = responseString;
                    this.parser.HandleEvent(null, args);
                }

                break;

                case ResponseType.responseNoQueryId:
                {
                    ConfigurationRequest request   = (ConfigurationRequest)this.deserializer.ReadObject(ms);
                    string responseString          = "{\"jsonrpc\":\"2.0\",\"error\":{\"code\": -32602, \"message\": \"Invalid method parameters\"}}";
                    MulticastMessageEventArgs args = new MulticastMessageEventArgs();
                    args.JsonString = responseString;
                    this.parser.HandleEvent(null, args);
                }

                break;

                case ResponseType.responseNoErrorNoResult:
                {
                    ConfigurationRequest request   = (ConfigurationRequest)this.deserializer.ReadObject(ms);
                    string responseString          = "{\"jsonrpc\":\"2.0\",\"id\":\"" + request.QueryId + "\"}";
                    MulticastMessageEventArgs args = new MulticastMessageEventArgs();
                    args.JsonString = responseString;
                    this.parser.HandleEvent(null, args);
                }

                break;

                case ResponseType.responseIllegalJson:
                {
                    ConfigurationRequest      request = (ConfigurationRequest)this.deserializer.ReadObject(ms);
                    MulticastMessageEventArgs args    = new MulticastMessageEventArgs();
                    args.JsonString = @"{""jsonrpc""2.0"",""id"":""" + request.QueryId + @"""}";
                    this.parser.HandleEvent(null, args);
                }

                break;

                case ResponseType.responseEmptyJson:
                {
                    ConfigurationRequest      request = (ConfigurationRequest)this.deserializer.ReadObject(ms);
                    MulticastMessageEventArgs args    = new MulticastMessageEventArgs();
                    args.JsonString = null;
                    this.parser.HandleEvent(null, args);
                }

                break;
                }
            }
        }