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 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)); }
public MetadataPlugin Build(MetadataHooks hooks) { return(new MetadataPlugin(hooks)); }
internal static CoordinatorBuilder WithMetadata(this CoordinatorBuilder builder, SwarmSettings settings, MetadataHooks hooks) { if (settings.Metadata) { builder = builder.WithPlugin(new MetadataPlugin(hooks)); } return(builder); }
public MetadataPlugin(MetadataHooks hooks) { this.hooks = hooks; }