// Get a client for the device public IDeviceClient GetClient(Device device, IoTHubProtocol protocol, IScriptInterpreter scriptInterpreter) { this.instance.InitRequired(); var sdkClient = this.GetDeviceSdkClient(device, protocol); var methods = new DeviceMethods(sdkClient, this.log, this.diagnosticsLogger, scriptInterpreter); return(new DeviceClient( device.Id, protocol, sdkClient, methods, this.log)); }
/// <summary> /// Get a client for the device /// </summary> public IDeviceClient GetClient(Device device, IoTHubProtocol protocol, IScriptInterpreter scriptInterpreter) { this.SetupHub(); var sdkClient = this.GetDeviceSdkClient(device, protocol); var methods = new DeviceMethods(sdkClient, this.log, scriptInterpreter); return(new DeviceClient( device.Id, protocol, sdkClient, methods, this.log)); }
public DeviceClient( string deviceId, IoTHubProtocol protocol, IDeviceClientWrapper client, IDeviceMethods deviceMethods, ILogger logger) { this.deviceId = deviceId; this.protocol = protocol; this.client = client; this.deviceMethods = deviceMethods; this.log = logger; this.propertiesUpdateRequest = new DeviceProperties(client, this.log); }
public void Setup(string deviceId, DeviceModel deviceModel, IDeviceActor context) { if (this.setupDone) { this.log.Error("Setup has already been invoked, are you sharing this instance with multiple devices?", () => new { this.deviceId }); throw new DeviceActorAlreadyInitializedException(); } this.setupDone = true; this.deviceId = deviceId; this.protocol = deviceModel.Protocol; this.context = context; }
// Get a client for the device public IDeviceClient GetClient(Device device, IoTHubProtocol protocol) { this.instance.InitRequired(); IDeviceClientWrapper sdkClient = this.GetDeviceSdkClient(device, protocol); var methods = new DeviceMethods(this.config, this.log, this.diagnosticsLogger); return(new DeviceClient( device.Id, protocol, sdkClient, methods, this.config, this.log)); }
public DeviceClient( string deviceId, IoTHubProtocol protocol, Azure.Devices.Client.DeviceClient client, IDeviceMethods deviceMethods, IRateLimiting rateLimiting, ILogger logger) { this.deviceId = deviceId; this.protocol = protocol; this.client = client; this.deviceMethods = deviceMethods; this.rateLimiting = rateLimiting; this.log = logger; this.connected = false; }
public DeviceClient( string deviceId, IoTHubProtocol protocol, IDeviceClientWrapper client, IDeviceMethods deviceMethods, IServicesConfig servicesConfig, ILogger logger) { this.deviceId = deviceId; this.protocol = protocol; this.client = client; this.deviceMethods = deviceMethods; this.log = logger; this.deviceTwinEnabled = servicesConfig.DeviceTwinEnabled; this.propertiesUpdateRequest = new DeviceProperties(servicesConfig, logger); }
private IDeviceClientWrapper GetDeviceSdkClient(Device device, IoTHubProtocol protocol) { var connectionString = $"HostName={device.IoTHubHostName};DeviceId={device.Id};SharedAccessKey={device.AuthPrimaryKey}"; var userAgent = config.UserAgent; IDeviceClientWrapper sdkClient; switch (protocol) { case IoTHubProtocol.AMQP: this.log.Debug("Creating AMQP device client", () => new { device.Id, device.IoTHubHostName }); sdkClient = this.deviceClient.CreateFromConnectionString(connectionString, TransportType.Amqp_Tcp_Only, userAgent); break; case IoTHubProtocol.MQTT: this.log.Debug("Creating MQTT device client", () => new { device.Id, device.IoTHubHostName }); sdkClient = this.deviceClient.CreateFromConnectionString(connectionString, TransportType.Mqtt_Tcp_Only, userAgent); break; case IoTHubProtocol.HTTP: this.log.Debug("Creating HTTP device client", () => new { device.Id, device.IoTHubHostName }); sdkClient = this.deviceClient.CreateFromConnectionString(connectionString, TransportType.Http1, userAgent); break; default: this.log.Error("Unable to create a client for the given protocol", () => new { protocol }); throw new InvalidConfigurationException($"Unable to create a client for the given protocol ({protocol})"); } sdkClient.DisableRetryPolicy(); if (this.config.IoTHubSdkDeviceClientTimeout.HasValue) { sdkClient.OperationTimeoutInMilliseconds = this.config.IoTHubSdkDeviceClientTimeout.Value; } return(sdkClient); }
private Azure.Devices.Client.DeviceClient GetDeviceSdkClient(Device device, IoTHubProtocol protocol) { var connectionString = $"HostName={device.IoTHubHostName};DeviceId={device.Id};SharedAccessKey={device.AuthPrimaryKey}"; Azure.Devices.Client.DeviceClient sdkClient; switch (protocol) { case IoTHubProtocol.AMQP: this.log.Debug("Creating AMQP device client", () => new { device.Id, device.IoTHubHostName }); sdkClient = Azure.Devices.Client.DeviceClient.CreateFromConnectionString(connectionString, TransportType.Amqp_Tcp_Only); break; case IoTHubProtocol.MQTT: this.log.Debug("Creating MQTT device client", () => new { device.Id, device.IoTHubHostName }); sdkClient = Azure.Devices.Client.DeviceClient.CreateFromConnectionString(connectionString, TransportType.Mqtt_Tcp_Only); break; case IoTHubProtocol.HTTP: this.log.Debug("Creating HTTP device client", () => new { device.Id, device.IoTHubHostName }); sdkClient = Azure.Devices.Client.DeviceClient.CreateFromConnectionString(connectionString, TransportType.Http1); break; default: this.log.Error("Unable to create a client for the given protocol", () => new { protocol }); throw new InvalidConfigurationException($"Unable to create a client for the given protocol ({protocol})"); } sdkClient.SetRetryPolicy(new Azure.Devices.Client.NoRetry()); // When sending telemetry or other operations, wait only for preconfigured number of milliseconds. // This setting sets how throttling affects the application. The default SDK value is 4 minutes, // that causes high CPU usage. However extreme lower values such as 10000 milliseconds causes // memory leaks leading to simulator crashing and termination of telemetry. sdkClient.OperationTimeoutInMilliseconds = (uint)this.servicesConfig.IoTSdkConnectTimeout; return(sdkClient); }
private Azure.Devices.Client.DeviceClient GetDeviceSdkClient(Device device, IoTHubProtocol protocol) { var connectionString = $"HostName={device.IoTHubHostName};DeviceId={device.Id};SharedAccessKey={device.AuthPrimaryKey}"; Azure.Devices.Client.DeviceClient sdkClient; switch (protocol) { case IoTHubProtocol.AMQP: this.log.Debug("Creating AMQP device client", () => new { device.Id, device.IoTHubHostName }); sdkClient = Azure.Devices.Client.DeviceClient.CreateFromConnectionString(connectionString, TransportType.Amqp_Tcp_Only); break; case IoTHubProtocol.MQTT: this.log.Debug("Creating MQTT device client", () => new { device.Id, device.IoTHubHostName }); sdkClient = Azure.Devices.Client.DeviceClient.CreateFromConnectionString(connectionString, TransportType.Mqtt_Tcp_Only); break; case IoTHubProtocol.HTTP: this.log.Debug("Creating HTTP device client", () => new { device.Id, device.IoTHubHostName }); sdkClient = Azure.Devices.Client.DeviceClient.CreateFromConnectionString(connectionString, TransportType.Http1); break; default: this.log.Error("Unable to create a client for the given protocol", () => new { protocol }); throw new InvalidConfigurationException($"Unable to create a client for the given protocol ({protocol})"); } sdkClient.SetRetryPolicy(new NoRetry()); sdkClient.OperationTimeoutInMilliseconds = SDK_CLIENT_TIMEOUT; return(sdkClient); }