public bool PublishConfiguredMessage(DeviceConfigMessage deviceConfigMessage, IEnumerable <Guid> deviceUIDs) { _loggingService.Info("Started publishing configured messages - AcknowledgementBypasser.PublishConfiguredMessage", ""); bool result = false; var deviceConfiguredMsgs = new List <DeviceConfig>(); try { foreach (var parameter in deviceConfigMessage.Group.Parameters) { foreach (var deviceUID in deviceUIDs) { var deviceConfiguredMsg = new VSS.VisionLink.Interfaces.Events.DeviceConfig.DeviceConfig { DeviceUID = deviceUID, Group = new VSS.VisionLink.Interfaces.Events.DeviceConfig.ParamGroup { GroupName = deviceConfigMessage.Group.GroupName, Parameters = new List <VSS.VisionLink.Interfaces.Events.DeviceConfig.Parameter>() }, Timestamp = new VSS.VisionLink.Interfaces.Events.DeviceConfig.Context.TimestampDetail { EventUtc = deviceConfigMessage.Timestamp.EventUtc } }; var param = new VSS.VisionLink.Interfaces.Events.DeviceConfig.Parameter(); param.Attributes = new List <VSS.VisionLink.Interfaces.Events.DeviceConfig.Attributes>(); foreach (var attribute in parameter.Attributes) { var attr = new VSS.VisionLink.Interfaces.Events.DeviceConfig.Attributes { AttributeName = attribute.AttributeName, AttributeValue = attribute.AttributeValue }; param.Attributes.Add(attr); } param.ParameterName = parameter.ParameterName; deviceConfiguredMsg.Group.Parameters.Add(param); deviceConfiguredMsgs.Add(deviceConfiguredMsg); } } result = _kafkaPublisher.PublishDeviceConfiguredMessage(deviceConfiguredMsgs); } catch (Exception ex) { _loggingService.Error("An error has occured : " + JsonConvert.SerializeObject(ex), "", ex); } return(result); }
private DeviceConfigMessage BuildDeviceConfigMessage(DeviceConfigRequestBase request, string currentDateTimeUTC) { var deviceConfigMessage = new DeviceConfigMessage { Group = new ParamGroup { GroupName = request.ParameterGroupName, Parameters = new List <Parameter>() }, Timestamp = new TimestampDetail { EventUtc = DateTime.Parse(currentDateTimeUTC) } }; foreach (var item in request.ConfigValues) { if (this._paramterAttributeDetails.ContainsKey(item.Key)) { var parameterAttribute = item.Key.Split('.'); var parameter = deviceConfigMessage.Group.Parameters.FirstOrDefault(x => x.ParameterName == parameterAttribute[0]); if (parameter == null) { parameter = new Parameter { ParameterName = parameterAttribute[0] }; } if (parameter.Attributes == null) { parameter.Attributes = new List <AttributeDetails>(); } parameter.Attributes.Add( new AttributeDetails { AttributeName = parameterAttribute[1], AttributeValue = item.Value }); if (!deviceConfigMessage.Group.Parameters.Any(x => x.ParameterName == parameterAttribute[0])) { deviceConfigMessage.Group.Parameters.Add(parameter); } } } return(deviceConfigMessage); }
private async Task <Tuple <bool, List <DeviceConfigMsg> > > ProcessMessage(DeviceConfigurationSettingsConfig settingsConfig, DeviceConfigRequestBase request, DeviceConfigMessage deviceConfigMessage, List <DeviceConfigMsg> deviceConfigMsgs) { if (settingsConfig != null && !settingsConfig.SendToDevice) { //Dont insert into DeviceConfigMessage table. Just process the msg and publish to new Kafka topics this._loggingService.Info("Started Invoking ProcessBypassMessage", "DeviceConfigRepositoryServiceBase.ProcessMessage"); return(Tuple.Create <bool, List <DeviceConfigMsg> >(_ackBypasser.ProcessBypassMessage(request, deviceConfigMessage.Group), null)); } else { this._loggingService.Info("Started Invoking ProcessMessage", "DeviceConfigRepositoryServiceBase.ProcessMessage"); return(_messageConstructor.ProcessMessage(await GetRequestAndHandleForNullCases(request), deviceConfigMessage)); } }