private DiscoveryMetadata GetDiscoveryMetadata() { DiscoveryMetadata discoveryMetadata = new DiscoveryMetadata(); discoveryMetadata.NSv11 = _inspireMonitoring.NumberOfDatasetsRegisteredInADiscoveryService; // Antall datasett som er registrert i en discovery service (Alle datasett) discoveryMetadata.NSv12 = _inspireMonitoring.NumberOfServicesRegisteredInADiscoveryService; // Antall tjenester som er registrert i en discovery service (Alle tjenester) return(discoveryMetadata); }
/// <summary> /// Initializes a new instance of the <see cref="DiscoveryServer"/> class. /// </summary> /// <param name="responseMetadata">The response metadata.</param> /// <param name="port">The port to bind to.</param> /// <param name="localAddress">The local address to bind to.</param> public DiscoveryServer(DiscoveryMetadata responseMetadata, int port = DefaultDiscoveryPort, IPAddress localAddress = null) { if (responseMetadata == null) { throw new ArgumentNullException("responseMetadata", "Discovery response metadata is missing."); } Port = port; LocalAddress = localAddress ?? IPAddress.Any; ResponseMetadata = responseMetadata; ResponseMetadataPacket = DiscoveryMetadataHelper.Encode(ResponseMetadata); }
private void HandleResponse(DiscoveryMetadata response) { lock (lockObject) { if (response == null || Results.Contains(response)) { return; } Results.Add(response); } OnDiscovered(new DiscoveryEventArgs(response)); }
public IActionResult Deregister(HttpRequestMessage request, string name, string instance) { lock (Hub.Hosts) { DiscoveryMetadata host = Hub.Hosts.FirstOrDefault(item => item.HostName.ToLower() == name.ToLower() && item.Instance.ToLower() == instance.ToLower()); if (host != null) { Hub.Hosts.Remove(host); } } return(new ObjectResult("OK")); }
/// <summary> /// Initializes a new instance of the <see cref="DiscoveryClient"/> class. /// </summary> /// <param name="requestMetadata">The request metadata.</param> /// <param name="port">The port of the discovery server.</param> public DiscoveryClient(DiscoveryMetadata requestMetadata, int port = DiscoveryServer.DefaultDiscoveryPort) { if (requestMetadata == null) { throw new ArgumentNullException("requestMetadata", "Discovery request metadata is missing."); } Port = port; RequestMetadata = requestMetadata; RequestMetadataPacket = DiscoveryMetadataHelper.Encode(RequestMetadata); DestinationAddress = IPAddress.Broadcast; DestinationEndpoint = new IPEndPoint(DestinationAddress, Port); Results = new HashSet <DiscoveryMetadata>(); RetryTimeout = TimeSpan.FromSeconds(1); RetryCount = 10; }
public IActionResult Register(HttpRequestMessage request, [FromBody] DiscoveryMetadata host) { lock (Hub.Hosts) { if (Hub.Hosts == null) { Hub.Hosts = new List <DiscoveryMetadata>(); } DiscoveryMetadata existingHost = Hub.Hosts.FirstOrDefault(item => item.HostAddress.ToLower() == host.HostAddress.ToLower()); if (existingHost == null) { Hub.Hosts.Add(host); } } return(new ObjectResult("OK")); }
DiscoveryMetadata GetDiscoveryMetadata() { List <Service> services = new List <Service>(); foreach (Type controllerType in ControllerTypes) { Service service = ProcessService(controllerType); if (service != null) { services.Add(service); } } DiscoveryMetadata discoveryMetadata = new DiscoveryMetadata() { HostName = _HostName, Instance = _Instance, HostAddress = _HostAddress + (_HostAddress.EndsWith("/") ? "" : "/"), Services = services }; return(discoveryMetadata); }
/// <summary> /// Initializes a new instance of the <see cref="DiscoveryEventArgs"/> class. /// </summary> /// <param name="metadata">Discovery metadata.</param> public DiscoveryEventArgs(DiscoveryMetadata metadata) { Metadata = metadata; }
public void Start() { IConfigurationBuilder configBuilder = new ConfigurationBuilder(); configBuilder.AddJsonFile("host.json"); IConfigurationRoot configuration = configBuilder.Build(); _HostName = configuration["hostName"]; _Instance = GenerateUniqueInstanceIdentifier(); _WebHost.Start(); _DiscoveryMetadata = GetDiscoveryMetadata(); _EventSubscriptions = GetEventSubscriptions(); _HostMetadata = GetHostMetadata(); // discovery hub _DiscoveryHubTimer = new Timer(5000); _DiscoveryHubTimer.Elapsed += (s, e) => { _DiscoveryHubTimer.Stop(); if (!_ConnectedToDiscoveryHub) { _ConnectedToDiscoveryHub = ConnectToDiscoveryHub(); OnDiscoveryHubConnect(_ConnectedToDiscoveryHub); } else { _ConnectedToDiscoveryHub = PingDiscoveryHub(); } _DiscoveryHubTimer.Start(); }; _DiscoveryHubTimer.Start(); // event hub _EventHubTimer = new Timer(5000); _EventHubTimer.Elapsed += (s, e) => { _EventHubTimer.Stop(); if (!_SubscribedToEvents) { _SubscribedToEvents = SubscribeToEvents(); OnEventHubSubscribed(_SubscribedToEvents); } else { _SubscribedToEvents = PingEventHub(); } _EventHubTimer.Start(); }; _EventHubTimer.Start(); // monitor hub _MonitorHubTimer = new Timer(5000); _MonitorHubTimer.Elapsed += (s, e) => { _MonitorHubTimer.Stop(); if (!_RegisteredWithMonitorHub) { _RegisteredWithMonitorHub = RegisterWithMonitorHub(); OnMonitorHubRegistered(_RegisteredWithMonitorHub); } else { _RegisteredWithMonitorHub = PingMonitorHub(); } _MonitorHubTimer.Start(); }; _MonitorHubTimer.Start(); }