/// <summary> /// Convert to service model /// </summary> /// <param name="registration"></param> /// <returns></returns> public static DiscovererModel ToServiceModel(this DiscovererRegistration registration) { return(new DiscovererModel { Discovery = registration.Discovery != DiscoveryMode.Off ? registration.Discovery : (DiscoveryMode?)null, Id = DiscovererModelEx.CreateDiscovererId(registration.DeviceId, registration.ModuleId), SiteId = registration.SiteId, LogLevel = registration.LogLevel, DiscoveryConfig = registration.ToConfigModel(), Connected = registration.IsConnected() ? true : (bool?)null, OutOfSync = registration.IsConnected() && !registration._isInSync ? true : (bool?)null }); }
/// <summary> /// Create unique application id /// </summary> /// <param name="model"></param> /// <returns></returns> public static string CreateApplicationId(ApplicationInfoModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } var siteOrGatewayId = model.SiteId; if (siteOrGatewayId == null && model.DiscovererId != null) { siteOrGatewayId = DiscovererModelEx.ParseDeviceId(model.DiscovererId, out _); } return(CreateApplicationId(siteOrGatewayId, model.ApplicationUri, model.ApplicationType)); }
/// <summary> /// Get site or gateway id from registration /// </summary> /// <param name="registration"></param> /// <returns></returns> public static string GetSiteOrGatewayId(this EndpointRegistration registration) { if (registration == null) { return(null); } var siteOrGatewayId = registration?.SiteId; if (siteOrGatewayId == null) { var id = registration?.DiscovererId ?? registration?.SupervisorId; if (id != null) { siteOrGatewayId = DiscovererModelEx.ParseDeviceId(id, out _); } } return(siteOrGatewayId); }
/// <summary> /// Patch this registration and create patch twin model to upload /// </summary> /// <param name="model"></param> /// <param name="disabled"></param> public static DiscovererRegistration ToDiscovererRegistration( this DiscovererModel model, bool?disabled = null) { if (model == null) { throw new ArgumentNullException(nameof(model)); } var deviceId = DiscovererModelEx.ParseDeviceId(model.Id, out var moduleId); return(new DiscovererRegistration { IsDisabled = disabled, DeviceId = deviceId, ModuleId = moduleId, LogLevel = model.LogLevel, Discovery = model.RequestedMode ?? DiscoveryMode.Off, AddressRangesToScan = model.RequestedConfig?.AddressRangesToScan, NetworkProbeTimeout = model.RequestedConfig?.NetworkProbeTimeout, MaxNetworkProbes = model.RequestedConfig?.MaxNetworkProbes, PortRangesToScan = model.RequestedConfig?.PortRangesToScan, PortProbeTimeout = model.RequestedConfig?.PortProbeTimeout, MaxPortProbes = model.RequestedConfig?.MaxPortProbes, IdleTimeBetweenScans = model.RequestedConfig?.IdleTimeBetweenScans, MinPortProbesPercent = model.RequestedConfig?.MinPortProbesPercent, SecurityModeFilter = model.RequestedConfig?.ActivationFilter?. SecurityMode, TrustListsFilter = model.RequestedConfig?.ActivationFilter?. TrustLists.EncodeAsDictionary(), SecurityPoliciesFilter = model.RequestedConfig?.ActivationFilter?. SecurityPolicies.EncodeAsDictionary(), DiscoveryUrls = model.RequestedConfig?.DiscoveryUrls?. EncodeAsDictionary(), Locales = model.RequestedConfig?.Locales?. EncodeAsDictionary(), Connected = model.Connected ?? false, Version = null, SiteId = model.SiteId, }); }