public async Task Start() { try { if (_started) { throw new Exception("Device already started."); } await _deviceClient.OpenAsync(); _started = true; DeviceStarted?.Invoke(DeviceId, HostName); if (!_initialized) { IotDeviceMethod[] methods = GetNamedMethods(); foreach (IotDeviceMethod method in methods) { _deviceClient.SetMethodHandlerAsync(method.Name, method.Callback, method.Context).Wait(); } _initialized = true; } } catch (Exception exc) { int x = 0; } }
private void InitSystem() { Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(1000, 1000, Self, new Evalutate(), ActorRefs.NoSender); var gatewaystrepo = repositoryManager.Ask <List <GatewayModel> >(new GetAll()).Result; foreach (var gateway in gatewaystrepo) { var gatewayCreated = new GatewayCreated(gateway.Id); var gatewaySended = new GatewaySended(gateway.Id, gateway.Value); var gatewayStarted = new GatewayStarted(gateway.Id, gateway.Ip); var gatewayUpdate = new GatewayUpdate(gateway.Id, gateway.Name); var gatewayDisconnectd = new GatewayDisconnected(gateway.Id); var gatewayStatus = new GatewayStatus(gateway.Id); deviceManager.Tell(gatewayCreated.GatewayPhysicalCreated); dashboardManager.Tell(gatewayCreated.GatewayDashBoardCreated); deviceManager.Tell(gatewaySended.GatewayPhysicalSended); dashboardManager.Tell(gatewaySended.GatewayDashBoardSended); dashboardManager.Tell(gatewayStarted.GatewayDashBoardStarted); dashboardManager.Tell(gatewayUpdate.GatewayDashBoardUpdate); deviceManager.Tell(gatewayDisconnectd.GatewayPhysicalDisconnected); dashboardManager.Tell(gatewayDisconnectd.GatewayDashBoardDisconnected); deviceManager.Tell(gatewayStatus.GatewayPhysicalStatus); foreach (var device in gateway.Devices) { var deviceInfo = new DeviceInfo(device.Id, gateway.Id); var deviceCreated = new DeviceCreated(deviceInfo); var deviceSended = new DeviceSended(deviceInfo, device.Value); var deviceStarted = new DeviceStarted(deviceInfo, device.Ip); var deviceUpdate = new DeviceUpdate(deviceInfo, device.Name); var deviceDisconnectd = new DeviceDisconnected(deviceInfo); var deviceStatus = new DeviceStatus(deviceInfo); deviceManager.Tell(deviceCreated.DevicePhysicalCreated); dashboardManager.Tell(deviceCreated.DeviceDashBoardCreated); deviceManager.Tell(deviceSended.DevicePhysicalSended); dashboardManager.Tell(deviceSended.DeviceDashBoardSended); dashboardManager.Tell(deviceStarted.DeviceDashBoardStarted); dashboardManager.Tell(deviceUpdate.DeviceDashBoardUpdate); deviceManager.Tell(deviceDisconnectd.DevicePhysicalDisconnected); dashboardManager.Tell(deviceDisconnectd.DeviceDashBoardDisconnected); deviceManager.Tell(deviceStatus.DevicePhysicalStatus); } } }
private void Worker() { do { List <Device> devices = null; lock (_lock) { devices = queue.ToList(); } if (devices != null && devices.Count > 0) { var device = devices[0]; device.Start(); DeviceStarted?.Invoke(device); // Remove from queue lock (_lock) queue.RemoveAll(o => o.DeviceId == device.DeviceId); } } while (!stop.WaitOne(Delay, true)); }