2016-12-23 18:35:37 +00:00
|
|
|
package ipfscluster
|
|
|
|
|
2017-01-30 12:12:25 +00:00
|
|
|
import (
|
2018-03-13 14:32:56 +00:00
|
|
|
"context"
|
2017-02-02 22:52:06 +00:00
|
|
|
"errors"
|
2017-01-30 12:12:25 +00:00
|
|
|
|
|
|
|
peer "github.com/libp2p/go-libp2p-peer"
|
2017-02-08 17:04:08 +00:00
|
|
|
|
|
|
|
"github.com/ipfs/ipfs-cluster/api"
|
2017-01-30 12:12:25 +00:00
|
|
|
)
|
2016-12-23 18:35:37 +00:00
|
|
|
|
2017-01-25 11:14:39 +00:00
|
|
|
// RPCAPI is a go-libp2p-gorpc service which provides the internal ipfs-cluster
|
2017-01-26 18:59:31 +00:00
|
|
|
// API, which enables components and cluster peers to communicate and
|
2016-12-28 15:25:24 +00:00
|
|
|
// request actions from each other.
|
|
|
|
//
|
|
|
|
// The RPC API methods are usually redirects to the actual methods in
|
|
|
|
// the different components of ipfs-cluster, with very little added logic.
|
|
|
|
// Refer to documentation on those methods for details on their behaviour.
|
2016-12-23 18:35:37 +00:00
|
|
|
type RPCAPI struct {
|
2017-02-08 17:04:08 +00:00
|
|
|
c *Cluster
|
2016-12-23 18:35:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
Cluster components methods
|
|
|
|
*/
|
|
|
|
|
2017-01-25 17:07:19 +00:00
|
|
|
// ID runs Cluster.ID()
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) ID(ctx context.Context, in struct{}, out *api.IDSerial) error {
|
2017-02-08 17:04:08 +00:00
|
|
|
id := rpcapi.c.ID().ToSerial()
|
2017-01-26 18:59:31 +00:00
|
|
|
*out = id
|
2017-01-24 15:19:23 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2016-12-28 15:25:24 +00:00
|
|
|
// Pin runs Cluster.Pin().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) Pin(ctx context.Context, in api.PinSerial, out *struct{}) error {
|
2017-03-08 17:28:43 +00:00
|
|
|
return rpcapi.c.Pin(in.ToPin())
|
2016-12-23 18:35:37 +00:00
|
|
|
}
|
|
|
|
|
2016-12-28 15:25:24 +00:00
|
|
|
// Unpin runs Cluster.Unpin().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) Unpin(ctx context.Context, in api.PinSerial, out *struct{}) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin().Cid
|
2017-02-08 17:04:08 +00:00
|
|
|
return rpcapi.c.Unpin(c)
|
2016-12-23 18:35:37 +00:00
|
|
|
}
|
|
|
|
|
2017-04-06 02:27:02 +00:00
|
|
|
// Pins runs Cluster.Pins().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) Pins(ctx context.Context, in struct{}, out *[]api.PinSerial) error {
|
2017-02-08 17:04:08 +00:00
|
|
|
cidList := rpcapi.c.Pins()
|
2017-03-08 15:57:27 +00:00
|
|
|
cidSerialList := make([]api.PinSerial, 0, len(cidList))
|
2016-12-23 18:35:37 +00:00
|
|
|
for _, c := range cidList {
|
2017-02-13 15:46:53 +00:00
|
|
|
cidSerialList = append(cidSerialList, c.ToSerial())
|
2016-12-23 18:35:37 +00:00
|
|
|
}
|
2017-02-13 15:46:53 +00:00
|
|
|
*out = cidSerialList
|
2016-12-23 18:35:37 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2017-04-06 02:27:02 +00:00
|
|
|
// PinGet runs Cluster.PinGet().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) PinGet(ctx context.Context, in api.PinSerial, out *api.PinSerial) error {
|
2017-04-06 02:27:02 +00:00
|
|
|
cidarg := in.ToPin()
|
|
|
|
pin, err := rpcapi.c.PinGet(cidarg.Cid)
|
|
|
|
if err == nil {
|
|
|
|
*out = pin.ToSerial()
|
|
|
|
}
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2016-12-28 15:25:24 +00:00
|
|
|
// Version runs Cluster.Version().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) Version(ctx context.Context, in struct{}, out *api.Version) error {
|
2017-02-15 14:16:34 +00:00
|
|
|
*out = api.Version{
|
|
|
|
Version: rpcapi.c.Version(),
|
|
|
|
}
|
2016-12-23 18:35:37 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2017-01-26 18:59:31 +00:00
|
|
|
// Peers runs Cluster.Peers().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) Peers(ctx context.Context, in struct{}, out *[]api.IDSerial) error {
|
2017-02-08 17:04:08 +00:00
|
|
|
peers := rpcapi.c.Peers()
|
|
|
|
var sPeers []api.IDSerial
|
2017-01-26 18:59:31 +00:00
|
|
|
for _, p := range peers {
|
|
|
|
sPeers = append(sPeers, p.ToSerial())
|
|
|
|
}
|
|
|
|
*out = sPeers
|
2016-12-23 18:35:37 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2017-01-30 12:12:25 +00:00
|
|
|
// PeerAdd runs Cluster.PeerAdd().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) PeerAdd(ctx context.Context, in api.MultiaddrSerial, out *api.IDSerial) error {
|
2017-01-30 12:12:25 +00:00
|
|
|
addr := in.ToMultiaddr()
|
2017-02-08 17:04:08 +00:00
|
|
|
id, err := rpcapi.c.PeerAdd(addr)
|
2017-01-30 12:12:25 +00:00
|
|
|
*out = id.ToSerial()
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-10-13 21:12:46 +00:00
|
|
|
// ConnectGraph runs Cluster.GetConnectGraph().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) ConnectGraph(ctx context.Context, in struct{}, out *api.ConnectGraphSerial) error {
|
2017-10-13 21:12:46 +00:00
|
|
|
graph, err := rpcapi.c.ConnectGraph()
|
|
|
|
*out = graph.ToSerial()
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-01-30 12:12:25 +00:00
|
|
|
// PeerRemove runs Cluster.PeerRm().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) PeerRemove(ctx context.Context, in peer.ID, out *struct{}) error {
|
2017-02-08 17:04:08 +00:00
|
|
|
return rpcapi.c.PeerRemove(in)
|
2017-01-30 12:12:25 +00:00
|
|
|
}
|
|
|
|
|
2017-02-02 22:52:06 +00:00
|
|
|
// Join runs Cluster.Join().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) Join(ctx context.Context, in api.MultiaddrSerial, out *struct{}) error {
|
2017-02-02 22:52:06 +00:00
|
|
|
addr := in.ToMultiaddr()
|
2017-02-08 17:04:08 +00:00
|
|
|
err := rpcapi.c.Join(addr)
|
2017-02-02 22:52:06 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-01-25 18:38:23 +00:00
|
|
|
// StatusAll runs Cluster.StatusAll().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) StatusAll(ctx context.Context, in struct{}, out *[]api.GlobalPinInfoSerial) error {
|
2017-02-08 17:04:08 +00:00
|
|
|
pinfos, err := rpcapi.c.StatusAll()
|
|
|
|
*out = globalPinInfoSliceToSerial(pinfos)
|
2016-12-23 18:35:37 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-12-01 11:56:26 +00:00
|
|
|
// StatusAllLocal runs Cluster.StatusAllLocal().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) StatusAllLocal(ctx context.Context, in struct{}, out *[]api.PinInfoSerial) error {
|
2017-12-01 11:56:26 +00:00
|
|
|
pinfos := rpcapi.c.StatusAllLocal()
|
|
|
|
*out = pinInfoSliceToSerial(pinfos)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2017-01-25 18:38:23 +00:00
|
|
|
// Status runs Cluster.Status().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) Status(ctx context.Context, in api.PinSerial, out *api.GlobalPinInfoSerial) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin().Cid
|
2017-02-08 17:04:08 +00:00
|
|
|
pinfo, err := rpcapi.c.Status(c)
|
|
|
|
*out = pinfo.ToSerial()
|
2016-12-23 18:35:37 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-12-01 11:56:26 +00:00
|
|
|
// StatusLocal runs Cluster.StatusLocal().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) StatusLocal(ctx context.Context, in api.PinSerial, out *api.PinInfoSerial) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin().Cid
|
2017-12-01 11:56:26 +00:00
|
|
|
pinfo := rpcapi.c.StatusLocal(c)
|
2017-02-08 17:04:08 +00:00
|
|
|
*out = pinfo.ToSerial()
|
2017-12-01 11:56:26 +00:00
|
|
|
return nil
|
2016-12-23 18:35:37 +00:00
|
|
|
}
|
|
|
|
|
2017-01-25 18:38:23 +00:00
|
|
|
// SyncAll runs Cluster.SyncAll().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) SyncAll(ctx context.Context, in struct{}, out *[]api.GlobalPinInfoSerial) error {
|
2017-02-08 17:04:08 +00:00
|
|
|
pinfos, err := rpcapi.c.SyncAll()
|
|
|
|
*out = globalPinInfoSliceToSerial(pinfos)
|
2016-12-23 18:35:37 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-12-01 11:56:26 +00:00
|
|
|
// SyncAllLocal runs Cluster.SyncAllLocal().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) SyncAllLocal(ctx context.Context, in struct{}, out *[]api.PinInfoSerial) error {
|
2017-12-01 11:56:26 +00:00
|
|
|
pinfos, err := rpcapi.c.SyncAllLocal()
|
|
|
|
*out = pinInfoSliceToSerial(pinfos)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-01-25 18:38:23 +00:00
|
|
|
// Sync runs Cluster.Sync().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) Sync(ctx context.Context, in api.PinSerial, out *api.GlobalPinInfoSerial) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin().Cid
|
2017-02-08 17:04:08 +00:00
|
|
|
pinfo, err := rpcapi.c.Sync(c)
|
|
|
|
*out = pinfo.ToSerial()
|
2016-12-23 18:35:37 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-12-01 11:56:26 +00:00
|
|
|
// SyncLocal runs Cluster.SyncLocal().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) SyncLocal(ctx context.Context, in api.PinSerial, out *api.PinInfoSerial) error {
|
2017-12-01 11:56:26 +00:00
|
|
|
c := in.ToPin().Cid
|
|
|
|
pinfo, err := rpcapi.c.SyncLocal(c)
|
|
|
|
*out = pinfo.ToSerial()
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// RecoverAllLocal runs Cluster.RecoverAllLocal().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) RecoverAllLocal(ctx context.Context, in struct{}, out *[]api.PinInfoSerial) error {
|
2017-12-01 11:56:26 +00:00
|
|
|
pinfos, err := rpcapi.c.RecoverAllLocal()
|
2017-02-08 17:04:08 +00:00
|
|
|
*out = pinInfoSliceToSerial(pinfos)
|
2016-12-23 18:35:37 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-01-25 18:38:23 +00:00
|
|
|
// Recover runs Cluster.Recover().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) Recover(ctx context.Context, in api.PinSerial, out *api.GlobalPinInfoSerial) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin().Cid
|
2017-02-08 17:04:08 +00:00
|
|
|
pinfo, err := rpcapi.c.Recover(c)
|
|
|
|
*out = pinfo.ToSerial()
|
2017-01-25 18:38:23 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-11-30 00:53:31 +00:00
|
|
|
// RecoverLocal runs Cluster.RecoverLocal().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) RecoverLocal(ctx context.Context, in api.PinSerial, out *api.PinInfoSerial) error {
|
2017-11-30 00:53:31 +00:00
|
|
|
c := in.ToPin().Cid
|
|
|
|
pinfo, err := rpcapi.c.RecoverLocal(c)
|
|
|
|
*out = pinfo.ToSerial()
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-12-01 11:56:26 +00:00
|
|
|
// StateSync runs Cluster.StateSync().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) StateSync(ctx context.Context, in struct{}, out *[]api.PinInfoSerial) error {
|
2017-12-01 11:56:26 +00:00
|
|
|
pinfos, err := rpcapi.c.StateSync()
|
2017-11-30 00:53:31 +00:00
|
|
|
*out = pinInfoSliceToSerial(pinfos)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2016-12-23 18:35:37 +00:00
|
|
|
/*
|
|
|
|
Tracker component methods
|
|
|
|
*/
|
|
|
|
|
2016-12-28 15:25:24 +00:00
|
|
|
// Track runs PinTracker.Track().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) Track(ctx context.Context, in api.PinSerial, out *struct{}) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
return rpcapi.c.tracker.Track(in.ToPin())
|
2016-12-23 18:35:37 +00:00
|
|
|
}
|
|
|
|
|
2016-12-28 15:25:24 +00:00
|
|
|
// Untrack runs PinTracker.Untrack().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) Untrack(ctx context.Context, in api.PinSerial, out *struct{}) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin().Cid
|
2017-02-08 17:04:08 +00:00
|
|
|
return rpcapi.c.tracker.Untrack(c)
|
2016-12-23 18:35:37 +00:00
|
|
|
}
|
|
|
|
|
2017-01-25 18:38:23 +00:00
|
|
|
// TrackerStatusAll runs PinTracker.StatusAll().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) TrackerStatusAll(ctx context.Context, in struct{}, out *[]api.PinInfoSerial) error {
|
2017-02-08 17:04:08 +00:00
|
|
|
*out = pinInfoSliceToSerial(rpcapi.c.tracker.StatusAll())
|
2016-12-23 18:35:37 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2017-01-25 18:38:23 +00:00
|
|
|
// TrackerStatus runs PinTracker.Status().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) TrackerStatus(ctx context.Context, in api.PinSerial, out *api.PinInfoSerial) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin().Cid
|
2017-02-08 17:04:08 +00:00
|
|
|
pinfo := rpcapi.c.tracker.Status(c)
|
|
|
|
*out = pinfo.ToSerial()
|
2016-12-23 18:35:37 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2017-12-01 11:56:26 +00:00
|
|
|
// TrackerRecoverAll runs PinTracker.RecoverAll().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) TrackerRecoverAll(ctx context.Context, in struct{}, out *[]api.PinInfoSerial) error {
|
2017-12-01 11:56:26 +00:00
|
|
|
pinfos, err := rpcapi.c.tracker.RecoverAll()
|
|
|
|
*out = pinInfoSliceToSerial(pinfos)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-01-25 18:38:23 +00:00
|
|
|
// TrackerRecover runs PinTracker.Recover().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) TrackerRecover(ctx context.Context, in api.PinSerial, out *api.PinInfoSerial) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin().Cid
|
2017-02-08 17:04:08 +00:00
|
|
|
pinfo, err := rpcapi.c.tracker.Recover(c)
|
|
|
|
*out = pinfo.ToSerial()
|
2017-01-25 18:38:23 +00:00
|
|
|
return err
|
|
|
|
}
|
2016-12-23 18:35:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
IPFS Connector component methods
|
|
|
|
*/
|
|
|
|
|
2016-12-28 15:25:24 +00:00
|
|
|
// IPFSPin runs IPFSConnector.Pin().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) IPFSPin(ctx context.Context, in api.PinSerial, out *struct{}) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin().Cid
|
2018-03-01 19:52:10 +00:00
|
|
|
r := in.ToPin().Recursive
|
|
|
|
return rpcapi.c.ipfs.Pin(c, r)
|
2016-12-23 18:35:37 +00:00
|
|
|
}
|
|
|
|
|
2016-12-28 15:25:24 +00:00
|
|
|
// IPFSUnpin runs IPFSConnector.Unpin().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) IPFSUnpin(ctx context.Context, in api.PinSerial, out *struct{}) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin().Cid
|
2017-02-08 17:04:08 +00:00
|
|
|
return rpcapi.c.ipfs.Unpin(c)
|
2016-12-23 18:35:37 +00:00
|
|
|
}
|
|
|
|
|
2017-01-25 17:07:19 +00:00
|
|
|
// IPFSPinLsCid runs IPFSConnector.PinLsCid().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) IPFSPinLsCid(ctx context.Context, in api.PinSerial, out *api.IPFSPinStatus) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin().Cid
|
2017-02-08 17:04:08 +00:00
|
|
|
b, err := rpcapi.c.ipfs.PinLsCid(c)
|
2016-12-23 18:35:37 +00:00
|
|
|
*out = b
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-01-25 17:07:19 +00:00
|
|
|
// IPFSPinLs runs IPFSConnector.PinLs().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) IPFSPinLs(ctx context.Context, in string, out *map[string]api.IPFSPinStatus) error {
|
2017-02-09 15:29:17 +00:00
|
|
|
m, err := rpcapi.c.ipfs.PinLs(in)
|
2017-01-25 17:07:19 +00:00
|
|
|
*out = m
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-03-27 13:07:12 +00:00
|
|
|
// IPFSConnectSwarms runs IPFSConnector.ConnectSwarms().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) IPFSConnectSwarms(ctx context.Context, in struct{}, out *struct{}) error {
|
2017-03-27 13:07:12 +00:00
|
|
|
err := rpcapi.c.ipfs.ConnectSwarms()
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// IPFSConfigKey runs IPFSConnector.ConfigKey().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) IPFSConfigKey(ctx context.Context, in string, out *interface{}) error {
|
2017-03-27 13:07:12 +00:00
|
|
|
res, err := rpcapi.c.ipfs.ConfigKey(in)
|
|
|
|
*out = res
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-08-02 22:49:25 +00:00
|
|
|
// IPFSFreeSpace runs IPFSConnector.FreeSpace().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) IPFSFreeSpace(ctx context.Context, in struct{}, out *uint64) error {
|
2017-08-02 22:49:25 +00:00
|
|
|
res, err := rpcapi.c.ipfs.FreeSpace()
|
|
|
|
*out = res
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-03-27 13:07:12 +00:00
|
|
|
// IPFSRepoSize runs IPFSConnector.RepoSize().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) IPFSRepoSize(ctx context.Context, in struct{}, out *uint64) error {
|
2017-03-27 13:07:12 +00:00
|
|
|
res, err := rpcapi.c.ipfs.RepoSize()
|
|
|
|
*out = res
|
|
|
|
return err
|
2017-03-23 18:34:33 +00:00
|
|
|
}
|
|
|
|
|
2017-10-13 21:12:46 +00:00
|
|
|
// IPFSSwarmPeers runs IPFSConnector.SwarmPeers().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) IPFSSwarmPeers(ctx context.Context, in struct{}, out *api.SwarmPeersSerial) error {
|
2017-10-13 21:12:46 +00:00
|
|
|
res, err := rpcapi.c.ipfs.SwarmPeers()
|
|
|
|
*out = res.ToSerial()
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2016-12-23 18:35:37 +00:00
|
|
|
/*
|
|
|
|
Consensus component methods
|
|
|
|
*/
|
|
|
|
|
2016-12-28 15:25:24 +00:00
|
|
|
// ConsensusLogPin runs Consensus.LogPin().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) ConsensusLogPin(ctx context.Context, in api.PinSerial, out *struct{}) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin()
|
2017-02-08 17:04:08 +00:00
|
|
|
return rpcapi.c.consensus.LogPin(c)
|
2016-12-23 18:35:37 +00:00
|
|
|
}
|
|
|
|
|
2016-12-28 15:25:24 +00:00
|
|
|
// ConsensusLogUnpin runs Consensus.LogUnpin().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) ConsensusLogUnpin(ctx context.Context, in api.PinSerial, out *struct{}) error {
|
2017-03-08 15:57:27 +00:00
|
|
|
c := in.ToPin()
|
2017-02-08 17:04:08 +00:00
|
|
|
return rpcapi.c.consensus.LogUnpin(c)
|
2016-12-23 18:35:37 +00:00
|
|
|
}
|
2017-01-30 12:12:25 +00:00
|
|
|
|
2017-11-08 19:04:04 +00:00
|
|
|
// ConsensusAddPeer runs Consensus.AddPeer().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) ConsensusAddPeer(ctx context.Context, in peer.ID, out *struct{}) error {
|
2017-11-08 19:04:04 +00:00
|
|
|
return rpcapi.c.consensus.AddPeer(in)
|
2017-02-02 22:52:06 +00:00
|
|
|
}
|
|
|
|
|
2017-11-08 19:04:04 +00:00
|
|
|
// ConsensusRmPeer runs Consensus.RmPeer().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) ConsensusRmPeer(ctx context.Context, in peer.ID, out *struct{}) error {
|
2017-11-08 19:04:04 +00:00
|
|
|
return rpcapi.c.consensus.RmPeer(in)
|
2017-02-02 22:52:06 +00:00
|
|
|
}
|
|
|
|
|
2017-11-14 11:26:42 +00:00
|
|
|
// ConsensusPeers runs Consensus.Peers().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) ConsensusPeers(ctx context.Context, in struct{}, out *[]peer.ID) error {
|
2017-11-14 11:26:42 +00:00
|
|
|
peers, err := rpcapi.c.consensus.Peers()
|
|
|
|
*out = peers
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-01-30 12:12:25 +00:00
|
|
|
/*
|
|
|
|
Peer Manager methods
|
|
|
|
*/
|
|
|
|
|
|
|
|
// PeerManagerAddPeer runs peerManager.addPeer().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) PeerManagerAddPeer(ctx context.Context, in api.MultiaddrSerial, out *struct{}) error {
|
2017-02-02 22:52:06 +00:00
|
|
|
addr := in.ToMultiaddr()
|
2018-01-16 19:57:54 +00:00
|
|
|
err := rpcapi.c.peerManager.addPeer(addr, false)
|
2017-02-02 22:52:06 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-11-08 19:04:04 +00:00
|
|
|
// PeerManagerImportAddresses runs peerManager.importAddresses().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) PeerManagerImportAddresses(ctx context.Context, in api.MultiaddrsSerial, out *struct{}) error {
|
2017-02-02 22:52:06 +00:00
|
|
|
addrs := in.ToMultiaddrs()
|
2018-01-16 19:57:54 +00:00
|
|
|
err := rpcapi.c.peerManager.importAddresses(addrs, false)
|
2017-01-30 12:12:25 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2017-02-13 15:46:53 +00:00
|
|
|
/*
|
|
|
|
PeerMonitor
|
|
|
|
*/
|
|
|
|
|
|
|
|
// PeerMonitorLogMetric runs PeerMonitor.LogMetric().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) PeerMonitorLogMetric(ctx context.Context, in api.Metric, out *struct{}) error {
|
2017-02-13 15:46:53 +00:00
|
|
|
rpcapi.c.monitor.LogMetric(in)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// PeerMonitorLastMetrics runs PeerMonitor.LastMetrics().
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) PeerMonitorLastMetrics(ctx context.Context, in string, out *[]api.Metric) error {
|
2017-02-13 15:46:53 +00:00
|
|
|
*out = rpcapi.c.monitor.LastMetrics(in)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2017-02-02 22:52:06 +00:00
|
|
|
/*
|
|
|
|
Other
|
|
|
|
*/
|
2017-01-30 12:12:25 +00:00
|
|
|
|
2017-02-02 22:52:06 +00:00
|
|
|
// RemoteMultiaddrForPeer returns the multiaddr of a peer as seen by this peer.
|
|
|
|
// This is necessary for a peer to figure out which of its multiaddresses the
|
|
|
|
// peers are seeing (also when crossing NATs). It should be called from
|
|
|
|
// the peer the IN parameter indicates.
|
2018-03-13 14:32:56 +00:00
|
|
|
func (rpcapi *RPCAPI) RemoteMultiaddrForPeer(ctx context.Context, in peer.ID, out *api.MultiaddrSerial) error {
|
2017-02-08 17:04:08 +00:00
|
|
|
conns := rpcapi.c.host.Network().ConnsToPeer(in)
|
2017-02-02 22:52:06 +00:00
|
|
|
if len(conns) == 0 {
|
|
|
|
return errors.New("no connections to: " + in.Pretty())
|
|
|
|
}
|
2018-03-20 18:35:42 +00:00
|
|
|
*out = api.MultiaddrToSerial(api.MustLibp2pMultiaddrJoin(conns[0].RemoteMultiaddr(), in))
|
2017-01-30 12:12:25 +00:00
|
|
|
return nil
|
|
|
|
}
|