public static void Main(string[] args) { var cancelationTokenSource = new CancellationTokenSource(); var logger = new ConsoleLogger(); var cache = new SnapshotCache(true, logger); var watcher = new SnapshotFileWatcher(s => cache.SetSnapshot("envoy1", s)); Console.WriteLine("Configuration loaded from files"); watcher.Start(); Console.WriteLine("File watcher started"); var services = new Services(cache, logger, cancelationTokenSource.Token); Server server = new Server { Services = { ClusterDiscoveryService.BindService(services.ClusterService), EndpointDiscoveryService.BindService(services.EndpointService), ListenerDiscoveryService.BindService(services.ListenerService), RouteDiscoveryService.BindService(services.RouteService), AggregatedDiscoveryService.BindService(services.AggregatedService) }, Ports = { new ServerPort("0.0.0.0", Port, ServerCredentials.Insecure) } }; server.Start(); Console.WriteLine($"Server listening on port {Port.ToString()}"); Console.WriteLine("Press any key to stop the server..."); Console.ReadKey(); cancelationTokenSource.Cancel(); server.ShutdownAsync().Wait(); }
/// <summary> /// Optional override to create listeners (e.g., TCP, HTTP) for this service replica to handle client or user requests. /// </summary> /// <returns>A collection of listeners.</returns> protected override IEnumerable <ServiceInstanceListener> CreateServiceInstanceListeners() { return(new[] { new ServiceInstanceListener(serviceContext => new GrpcCommunicationListener(new[] { (Func <CancellationToken, ServerServiceDefinition>)(ct => AggregatedDiscoveryService.BindService(new Services(cache, logger, ct).AggregatedService)) }, serviceContext)) }); }