Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }