public void Should_sort_128_by_distance_from_end() { var a = new KNodeId128(ulong.MaxValue, ulong.MaxValue); var l = Enumerable.Range(0, 256).Select(i => KNodeId <KNodeId128> .Create()).ToArray(); Array.Sort(l, new KNodeIdDistanceComparer <KNodeId128>(a)); l.Should().BeInDescendingOrder(KNodeIdComparer <KNodeId128> .Default); }
public void Should_sort_64_by_distance() { var a = new KNodeId64(ulong.MinValue); var l = Enumerable.Range(0, 256).Select(i => KNodeId <KNodeId64> .Create()).ToArray(); Array.Sort(l, new KNodeIdDistanceComparer <KNodeId64>(a)); l.Should().BeInAscendingOrder(KNodeIdComparer <KNodeId64> .Default); }
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 void Should_generate_random_nodeid_for_256() { var kid1 = KNodeId.Create <KNodeId256>(); }
public void Should_generate_random_nodeid_for_160() { var kid1 = KNodeId.Create <KNodeId160>(); }
static void RegisterKademlia(ContainerBuilder builder, ulong networkId) { builder.RegisterType <KJsonMessageFormat <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KProtobufMessageFormat <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KMessagePackMessageFormat <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KRefresher <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KConnector <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KInvoker <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KInvokerPolicy <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KRequestHandler <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KFixedTableRouter <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KLookup <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KValueAccessor <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KInMemoryStore <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KInMemoryPublisher <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KHost <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KUdpProtocol <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KUdpMulticastDiscovery <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KStaticDiscovery <KNodeId256> >().AsImplementedInterfaces().SingleInstance(); builder.RegisterType <KHttpProtocol <KNodeId256> >().AsSelf().SingleInstance(); builder.RegisterType <KHostedService>().AsImplementedInterfaces().SingleInstance(); builder.Configure <KHostOptions <KNodeId256> >(o => { o.NetworkId = networkId; o.NodeId = KNodeId <KNodeId256> .Create(); }); builder.Configure <KFixedTableRouterOptions>(o => { }); builder.Configure <KStaticDiscoveryOptions>(o => { }); builder.Configure <KHostOptions <KNodeId256> >("Alethic.Kademlia:Host"); builder.Configure <KFixedTableRouterOptions>("Alethic.Kademlia:FixedTableRouter"); builder.Configure <KUdpOptions>("Alethic.Kademlia:Udp"); builder.Configure <KStaticDiscoveryOptions>("Alethic.Kademlia:StaticDiscovery"); }