public void ConfigurationRequestIllegalParameters()
        {
            Assert.Throws <ArgumentNullException>(
                delegate
            {
                ConfigurationRequest request = new ConfigurationRequest(null, "bla");
            },
                "no exception thrown if no configuration parameters set");

            Assert.Throws <ArgumentException>(
                delegate
            {
                ConfigurationDevice device        = new ConfigurationDevice("0009E5001231");
                ConfigurationNetSettings settings = new ConfigurationNetSettings(new ConfigurationInterface("eth0", ConfigurationInterface.Method.Dhcp));
                ConfigurationParams parameters    = new ConfigurationParams(device, settings);
                ConfigurationRequest request      = new ConfigurationRequest(parameters, null);
            },
                "no exception thrown if no query ID given");

            Assert.Throws <ArgumentException>(
                delegate
            {
                ConfigurationDevice device        = new ConfigurationDevice("0009E5001231");
                ConfigurationNetSettings settings = new ConfigurationNetSettings(new ConfigurationInterface("eth0", ConfigurationInterface.Method.Dhcp));
                ConfigurationParams parameters    = new ConfigurationParams(device, settings);
                ConfigurationRequest request      = new ConfigurationRequest(parameters, string.Empty);
            },
                "no exception thrown if empty query ID given");
        }
 internal string Serialize(ConfigurationRequest request)
 {
     using (MemoryStream ms = new MemoryStream())
     {
         this.serializer.WriteObject(ms, request);
         return(Encoding.UTF8.GetString(ms.ToArray()));
     }
 }
Beispiel #3
0
        public void SendConfiguration(ConfigurationParams parameters, string queryId, IConfigurationCallback callbacks, double timeoutMs)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }

            if (callbacks == null)
            {
                throw new ArgumentNullException("callbacks");
            }

            if (timeoutMs <= 0)
            {
                throw new ArgumentException("timeout");
            }

            if (string.IsNullOrEmpty(queryId))
            {
                throw new ArgumentException("queryId");
            }

            ConfigurationRequest request = new ConfigurationRequest(parameters, queryId);
            ConfigurationTimer   timer   = new ConfigurationTimer(timeoutMs, request);
            ConfigQuery          query   = new ConfigQuery(request, callbacks, timer);

            lock (this.awaitingResponses)
            {
                this.awaitingResponses.Add(queryId, query);
                timer.AutoReset = false;
                timer.Elapsed  += new ElapsedEventHandler(this.OnTimedEvent);
                timer.Start();
            }

            this.sender.SendMessage(this.serializer.Serialize(request));
        }
Beispiel #4
0
 internal ConfigurationTimer(double expire, ConfigurationRequest request)
     : base(expire)
 {
     this.Request = request;
 }
Beispiel #5
0
 internal ConfigQuery(ConfigurationRequest request, IConfigurationCallback callbacks, ConfigurationTimer timer)
 {
     this.Request   = request;
     this.Callbacks = callbacks;
     this.Timer     = timer;
 }
Beispiel #6
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;
                }
            }
        }