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