provider

package module
v0.6.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2021 License: Apache-2.0, MIT Imports: 2 Imported by: 3

README

go-ipfs-provider

Coverage Status Travis CI

Background

The provider system is responsible for announcing and reannouncing to the ipfs network that a node has content.

Install

Via go get:

$ go get github.com/fgeth/fg-ipfs-provider

Requires Go 1.12

Usage

Here's how you create, start, interact with, and stop the provider system:

import (
	"context"
	"time"

	"github.com/fgeth/fg-ipfs-provider"
	"github.com/fgeth/fg-ipfs-provider/queue"
	"github.com/fgeth/fg-ipfs-provider/simple"
)

rsys := (your routing system here)
dstore := (your datastore here)
cid := (your cid to provide here)

q := queue.NewQueue(context.Background(), "example", dstore)

reprov := simple.NewReprovider(context.Background(), time.Hour * 12, rsys, simple.NewBlockstoreProvider(dstore))
prov := simple.NewProvider(context.Background(), q, rsys)
sys := provider.NewSystem(prov, reprov)

sys.Run()

sys.Provide(cid)

sys.Close()

Contribute

PRs are welcome!

Small note: If editing the Readme, please conform to the standard-readme specification.

License

This library is dual-licensed under Apache 2.0 and MIT terms.

Copyright 2019. Protocol Labs, Inc.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Provider

type Provider interface {
	// Run is used to begin processing the provider work
	Run()
	// Provide takes a cid and makes an attempt to announce it to the network
	Provide(cid.Cid) error
	// Close stops the provider
	Close() error
}

Provider announces blocks to the network

type Reprovider

type Reprovider interface {
	// Run is used to begin processing the reprovider work and waiting for reprovide triggers
	Run()
	// Trigger a reprovide
	Trigger(context.Context) error
	// Close stops the reprovider
	Close() error
}

Reprovider reannounces blocks to the network

type System

type System interface {
	Run()
	Close() error
	Provide(cid.Cid) error
	Reprovide(context.Context) error
}

System defines the interface for interacting with the value provider system

func NewOfflineProvider

func NewOfflineProvider() System

NewOfflineProvider creates a ProviderSystem that does nothing

func NewSystem

func NewSystem(provider Provider, reprovider Reprovider) System

NewSystem constructs a new provider system from a provider and reprovider

Directories

Path Synopsis
Package simple implements structures and methods to provide blocks, keep track of which blocks are provided, and to allow those blocks to be reprovided.
Package simple implements structures and methods to provide blocks, keep track of which blocks are provided, and to allow those blocks to be reprovided.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL