private void StartCoordinator() { MetadataHooks metadata = new MetadataHooks { OnMetadataMeasured = data => MetaGet?.Handle(data), OnMetadataPieceReceived = OnMetadataPieceReceived, OnMetadataRequestSent = OnMetadataRequestSent }; CoordinatorHooks hooks = new CoordinatorHooks { OnPeerConnected = OnPeerConnected, OnPeerDisconnected = OnPeerDisconnected, OnBitfieldChanged = OnPeerBitfieldChanged, OnStatusChanged = OnPeerStatusChanged, OnBlockReceived = data => DataGet?.Handle(data), OnMessageRequested = data => Sender?.Send(data.Peer, data.Message), OnKeepAliveRequested = data => Sender?.SendKeepAlive(data.Peer) }; Coordinator = new CoordinatorBuilder() .WithHash(Hash) .WithMemory(Memory) .WithPipeline(Pipeline) .WithPlugin(new MetadataPlugin(metadata)) .Build(hooks); Coordinator.Start(); }
public CoordinatorContext(CoordinatorParameters parameters, CoordinatorDependencies dependencies, CoordinatorHooks hooks, CoordinatorConfiguration configuration) { this.parameters = parameters; this.dependencies = dependencies; this.hooks = hooks; this.configuration = configuration; collection = new CoordinatorCollection(); facts = new CoordinatorFacts(); }