private void SendRegister(UpDevice device, IDictionary <string, object> parameters, ListenerInfo info) { // Send the event register request to the called device Call serviceCall = new Call(info.driver, REGISTER_LISTENER_SERVICE, info.instanceId); serviceCall.AddParameter(REGISTER_EVENT_LISTENER_EVENT_KEY_PARAMETER, info.eventKey); if (parameters != null) { foreach (var pair in parameters) { if (pair.Key.Equals(REGISTER_EVENT_LISTENER_EVENT_KEY_PARAMETER, System.StringComparison.InvariantCultureIgnoreCase)) { throw new System.ArgumentException("Can't use reserved keys as parameters for registerForEvent"); } serviceCall.AddParameter(pair.Key, pair.Value); } } Response response = CallService(device, serviceCall); if (response == null) { throw new System.Exception("No response received during register process."); } else if (!string.IsNullOrEmpty(response.error)) { throw new System.Exception(response.error); } }
private UpDevice DoHandshake(NetworkDevice device) { try { // Create a Dummy device just for calling it logger.Log("Trying to handshake with device : " + device.networkDeviceName); UpDevice dummyDevice = new UpDevice(device.networkDeviceName); dummyDevice.AddNetworkInterface(device.networkDeviceName, device.networkDeviceType); Call call = new Call(DEVICE_DRIVER_NAME, "handshake", null); call.AddParameter("device", Json.Serialize(currentDevice.ToJSON())); Response response = gateway.CallService(dummyDevice, call); if ((response != null) && string.IsNullOrEmpty(response.error)) { // in case of a success greeting process, register the device in the neighborhood database object responseDevice = response.GetResponseData("device"); if (responseDevice != null) { UpDevice remoteDevice; if (responseDevice is string) { remoteDevice = UpDevice.FromJSON(Json.Deserialize(responseDevice as string)); } else { remoteDevice = UpDevice.FromJSON(responseDevice); } RegisterDevice(remoteDevice); logger.Log("Registered device " + remoteDevice.name); return(remoteDevice); } else { logger.LogError( "Not possible complete handshake with device '" + device.networkDeviceName + "' for no device on the handshake response."); } } else { logger.LogError( "Not possible to handshake with device '" + device.networkDeviceName + (response == null ? ": No Response received." : "': Cause : " + response.error)); } } catch (System.Exception e) { logger.Log(e.StackTrace); logger.LogError("Not possible to handshake with device '" + device.networkDeviceName + "'. " + e.Message); } return(null); }
private Call BuildRegisterCall(IDictionary <string, object> parameters, ListenerInfo info) { Call serviceCall = new Call(info.driver, REGISTER_LISTENER_SERVICE, info.instanceId); serviceCall.AddParameter(REGISTER_EVENT_LISTENER_EVENT_KEY_PARAMETER, info.eventKey); if (parameters != null) { foreach (var pair in parameters) { if (pair.Key.Equals(REGISTER_EVENT_LISTENER_EVENT_KEY_PARAMETER, System.StringComparison.InvariantCultureIgnoreCase)) { throw new System.ArgumentException("Can't use reserved keys as parameters for registerForEvent"); } serviceCall.AddParameter(pair.Key, pair.Value); } } return(serviceCall); }
private void UnregisterForEvent(ListenerInfo listenerInfo) { // Send the event register request to the called device Call call = new Call(listenerInfo.driver, UNREGISTER_LISTENER_SERVICE, listenerInfo.instanceId); call.AddParameter(REGISTER_EVENT_LISTENER_EVENT_KEY_PARAMETER, listenerInfo.eventKey); Response response = CallService(listenerInfo.device, call); if (response == null) { throw new ServiceCallException("No response receive from unregister service call."); } if (!string.IsNullOrEmpty(response.error)) { throw new ServiceCallException(response.error); } }
private void UnregisterForEvent(ListenerInfo listenerInfo) { // Send the event register request to the called device Call call = new Call(listenerInfo.driver, UNREGISTER_LISTENER_SERVICE, listenerInfo.instanceId); call.AddParameter(REGISTER_EVENT_LISTENER_EVENT_KEY_PARAMETER, listenerInfo.eventKey); Response response = CallService(listenerInfo.device, call); if (response == null) throw new ServiceCallException("No response receive from unregister service call."); if (!string.IsNullOrEmpty(response.error)) throw new ServiceCallException(response.error); }
private void SendRegister(UpDevice device, IDictionary<string, object> parameters, ListenerInfo info) { // Send the event register request to the called device Call serviceCall = new Call(info.driver, REGISTER_LISTENER_SERVICE, info.instanceId); serviceCall.AddParameter(REGISTER_EVENT_LISTENER_EVENT_KEY_PARAMETER, info.eventKey); if (parameters != null) { foreach (var pair in parameters) { if (pair.Key.Equals(REGISTER_EVENT_LISTENER_EVENT_KEY_PARAMETER, System.StringComparison.InvariantCultureIgnoreCase)) throw new System.ArgumentException("Can't use reserved keys as parameters for registerForEvent"); serviceCall.AddParameter(pair.Key, pair.Value); } } Response response = CallService(device, serviceCall); if (response == null) throw new System.Exception("No response received during register process."); else if (!string.IsNullOrEmpty(response.error)) throw new System.Exception(response.error); }
private Call BuildRegisterCall(IDictionary<string, object> parameters, ListenerInfo info) { Call serviceCall = new Call(info.driver, REGISTER_LISTENER_SERVICE, info.instanceId); serviceCall.AddParameter(REGISTER_EVENT_LISTENER_EVENT_KEY_PARAMETER, info.eventKey); if (parameters != null) { foreach (var pair in parameters) { if (pair.Key.Equals(REGISTER_EVENT_LISTENER_EVENT_KEY_PARAMETER, System.StringComparison.InvariantCultureIgnoreCase)) throw new System.ArgumentException("Can't use reserved keys as parameters for registerForEvent"); serviceCall.AddParameter(pair.Key, pair.Value); } } return serviceCall; }
private void FindDrivers(HashSet <string> unknownDrivers, UpDevice upDevice) { Call call = new Call(DEVICE_DRIVER_NAME, "tellEquivalentDrivers", null); call.AddParameter(DRIVERS_NAME_KEY, Json.Serialize(new List <string>(unknownDrivers))); try { Response equivalentDriverResponse = gateway.CallService(upDevice, call); if ((equivalentDriverResponse != null) && string.IsNullOrEmpty(equivalentDriverResponse.error)) { string interfaces = equivalentDriverResponse.GetResponseString(INTERFACES_KEY); if (interfaces != null) { List <UpDriver> drivers = new List <UpDriver>(); List <object> interfacesJson = Json.Deserialize(interfaces) as List <object>; for (int i = 0; i < interfacesJson.Count; ++i) { UpDriver upDriver = UpDriver.FromJSON(Json.Deserialize(interfacesJson[i] as string)); drivers.Add(upDriver); } try { driverManager.AddToEquivalenceTree(drivers); } catch (InterfaceValidationException) { logger.LogError("Not possible to add to equivalence tree due to wrong interface specification."); } foreach (DriverModel dependent in dependents) { try { driverManager.Insert(dependent); } catch (DriverNotFoundException) { logger.LogError( "Not possible to register driver '" + dependent.driver.name + "' due to unknown equivalent driver."); } catch (System.Exception) { logger.LogError( "Problems occurred in the registering of driver '" + dependent.driver.name + "' with instanceId '" + dependent.id + "' in the device '" + upDevice.name + "' and it will not be registered."); } } } else { logger.LogError( "Not possible to call service on device '" + upDevice.name + "' for no equivalent drivers on the service response."); } } else { logger.LogError( "Not possible to call service on device '" + upDevice.name + (equivalentDriverResponse == null ? ": null" : "': Cause : " + equivalentDriverResponse.error)); } } catch (ServiceCallException) { logger.LogError("Not possible to call service on device '" + upDevice.name); } }
private void FindDrivers(HashSet<string> unknownDrivers, UpDevice upDevice) { Call call = new Call(DEVICE_DRIVER_NAME, "tellEquivalentDrivers", null); call.AddParameter(DRIVERS_NAME_KEY, Json.Serialize(new List<string>(unknownDrivers))); try { Response equivalentDriverResponse = gateway.CallService(upDevice, call); if ((equivalentDriverResponse != null) && string.IsNullOrEmpty(equivalentDriverResponse.error)) { string interfaces = equivalentDriverResponse.GetResponseString(INTERFACES_KEY); if (interfaces != null) { List<UpDriver> drivers = new List<UpDriver>(); List<object> interfacesJson = Json.Deserialize(interfaces) as List<object>; for (int i = 0; i < interfacesJson.Count; ++i) { UpDriver upDriver = UpDriver.FromJSON(Json.Deserialize(interfacesJson[i] as string)); drivers.Add(upDriver); } try { driverManager.AddToEquivalenceTree(drivers); } catch (InterfaceValidationException) { logger.LogError("Not possible to add to equivalence tree due to wrong interface specification."); } foreach (DriverModel dependent in dependents) { try { driverManager.Insert(dependent); } catch (DriverNotFoundException) { logger.LogError( "Not possible to register driver '" + dependent.driver.name + "' due to unknown equivalent driver."); } catch (System.Exception) { logger.LogError( "Problems occurred in the registering of driver '" + dependent.driver.name + "' with instanceId '" + dependent.id + "' in the device '" + upDevice.name + "' and it will not be registered."); } } } else logger.LogError( "Not possible to call service on device '" + upDevice.name + "' for no equivalent drivers on the service response."); } else { logger.LogError( "Not possible to call service on device '" + upDevice.name + (equivalentDriverResponse == null ? ": null" : "': Cause : " + equivalentDriverResponse.error)); } } catch (ServiceCallException) { logger.LogError("Not possible to call service on device '" + upDevice.name); } }
private UpDevice DoHandshake(NetworkDevice device) { try { // Create a Dummy device just for calling it logger.Log("Trying to handshake with device : " + device.networkDeviceName); UpDevice dummyDevice = new UpDevice(device.networkDeviceName); dummyDevice.AddNetworkInterface(device.networkDeviceName, device.networkDeviceType); Call call = new Call(DEVICE_DRIVER_NAME, "handshake", null); call.AddParameter("device", Json.Serialize(currentDevice.ToJSON())); Response response = gateway.CallService(dummyDevice, call); if ((response != null) && string.IsNullOrEmpty(response.error)) { // in case of a success greeting process, register the device in the neighborhood database object responseDevice = response.GetResponseData("device"); if (responseDevice != null) { UpDevice remoteDevice; if (responseDevice is string) remoteDevice = UpDevice.FromJSON(Json.Deserialize(responseDevice as string)); else remoteDevice = UpDevice.FromJSON(responseDevice); RegisterDevice(remoteDevice); logger.Log("Registered device " + remoteDevice.name); return remoteDevice; } else logger.LogError( "Not possible complete handshake with device '" + device.networkDeviceName + "' for no device on the handshake response."); } else { logger.LogError( "Not possible to handshake with device '" + device.networkDeviceName + (response == null ? ": No Response received." : "': Cause : " + response.error)); } } catch (System.Exception e) { logger.Log(e.StackTrace); logger.LogError("Not possible to handshake with device '" + device.networkDeviceName + "'. " + e.Message); } return null; }