Example #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();
        }
Example #2
0
        public MetadataSession Start()
        {
            MetadataHooks  hooks  = new MetadataHooks();
            MetadataPlugin plugin = new MetadataPlugin(hooks);

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

            return(new MetadataSession(coordinator, plugin));
        }
Example #3
0
 public MetadataPlugin Build(MetadataHooks hooks)
 {
     return(new MetadataPlugin(hooks));
 }
Example #4
0
        internal static CoordinatorBuilder WithMetadata(this CoordinatorBuilder builder, SwarmSettings settings, MetadataHooks hooks)
        {
            if (settings.Metadata)
            {
                builder = builder.WithPlugin(new MetadataPlugin(hooks));
            }

            return(builder);
        }
Example #5
0
 public MetadataPlugin(MetadataHooks hooks)
 {
     this.hooks = hooks;
 }