Example #1
0
        public PeersSession Start()
        {
            PeersHooks  hooks  = new PeersHooks();
            PeersPlugin plugin = new PeersPlugin(hooks);

            CoordinatorService coordinator =
                new CoordinatorBuilder()
                .WithHash(FileHash.Random())
                .WithPipeline(pipeline)
                .WithPlugin(plugin)
                .Build();

            return(new PeersSession(coordinator, plugin));
        }
Example #2
0
        private void StartCoordinator()
        {
            MetadataHooks metadata = new MetadataHooks
            {
                OnMetadataMeasured        = data => MetaGet?.Handle(data),
                OnMetadataPieceReceived   = OnMetadataPieceReceived,
                OnMetadataRequestSent     = OnMetadataRequestSent,
                OnMetadataRequestReceived = OnMetadataRequestReceived
            };

            PeersHooks exchange = new PeersHooks
            {
                OnPeersDataReceived = OnPeerDataReceived
            };

            CoordinatorHooks hooks = new CoordinatorHooks
            {
                OnPeerConnected      = OnPeerConnected,
                OnPeerDisconnected   = OnPeerDisconnected,
                OnBitfieldChanged    = OnPeerBitfieldChanged,
                OnStatusChanged      = OnPeerStatusChanged,
                OnBlockReceived      = data => DataGet?.Handle(data),
                OnBlockRequested     = data => DataShare?.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)
                .WithMetadata(Settings, metadata)
                .WithExchange(Settings, exchange)
                .Build(hooks);

            Coordinator.Start();
        }
Example #3
0
        internal static CoordinatorBuilder WithExchange(this CoordinatorBuilder builder, SwarmSettings settings, PeersHooks hooks)
        {
            if (settings.Metadata)
            {
                builder = builder.WithPlugin(new PeersPlugin(hooks));
            }

            return(builder);
        }
Example #4
0
 public PeersPlugin Build(PeersHooks hooks)
 {
     return(new PeersPlugin(hooks));
 }