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())); } }
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)); }
internal ConfigurationTimer(double expire, ConfigurationRequest request) : base(expire) { this.Request = request; }
internal ConfigQuery(ConfigurationRequest request, IConfigurationCallback callbacks, ConfigurationTimer timer) { this.Request = request; this.Callbacks = callbacks; this.Timer = timer; }
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; } } }