private async void FetchStore(object state) { var initializeRequest = new KHttpRequest(_apiKey); var httpClient = new KHttpClientWrapper(); var serverInitResponse = await httpClient.Get <KServerInitializeResponseDto>(initializeRequest); _evaluator = KEvaluator.Create(KInMemoryStore.FromServer(serverInitResponse)); }
protected override async Task RunAsync(CancellationToken cancellationToken) { var fmt = new KProtobufMessageFormat <KNodeId256>(); var slf = KNodeId <KNodeId256> .Create(); var ink = new KInvokerPolicy <KNodeId256>(slf, logger: logger); var rtr = new KFixedTableRouter <KNodeId256>(slf, logger: logger); var kad = new KEngine <KNodeId256>(rtr, ink, lup, str, logger: logger); var lup = new KNodeLookup <KNodeId256>(kad, logger: logger); var str = new KInMemoryStore <KNodeId256>(rtr, ink, lup, TimeSpan.FromMinutes(1), logger: logger); var pub = new KInMemoryPublisher <KNodeId256>(ink, lup, str, logger: logger); var udp = new KUdpProtocol <KNodeId256>(2848441, kad, fmt, KIpEndpoint.Any, logger); var mcd = new KUdpMulticastDiscovery <KNodeId256>(2848441, kad, fmt, logger: logger); await udp.StartAsync(cancellationToken); await str.StartAsync(cancellationToken); await pub.StartAsync(cancellationToken); await mcd.StartAsync(cancellationToken); await kad.StartAsync(cancellationToken); while (cancellationToken.IsCancellationRequested == false) { await Task.Delay(TimeSpan.FromSeconds(1)); } await kad.StopAsync(); await mcd.StopAsync(); await pub.StopAsync(); await str.StopAsync(); await udp.StopAsync(); }
public KClientService(string apiKey, int pollingInterval = 60) { _apiKey = apiKey; _timer = new Timer(FetchStore, null, TimeSpan.Zero, TimeSpan.FromSeconds(pollingInterval)); _evaluator = KEvaluator.Create(KInMemoryStore.Empty()); }