client

package
v0.0.0-...-f8b7a73 Latest Latest
Warning

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

Go to latest
Published: Mar 16, 2019 License: GPL-3.0 Imports: 13 Imported by: 0

Documentation

Overview

实现PSS功能的简单抽象

PSS客户端库旨在简化在PSS上使用p2p.protocols包的过程。

IO使用普通的p2p.msgreadwriter接口执行,该接口使用websockets作为传输层,使用swarm/pss包中pssapi类中的方法,通过rpc透明地与pss节点通信。

最小ISH使用示例(需要具有WebSocket RPC的正在运行的PSS节点):

进口( “语境” “FMT” “操作系统” pss“github.com/ethereum/go-ethereum/swarm/pss/client” “github.com/ethereum/go-ethereum/p2p/协议” “github.com/ethereum/go-ethereum/p2p” “github.com/ethereum/go-ethereum/swarm/pot” “github.com/ethereum/go-ethereum/swarm/log” )

FOOMSG结构类型 条形图 }

func foohandler(msg interface)错误 foomsg,确定:=msg.(*foomsg) 如果OK { log.debug(“yay,刚收到一条消息”,“msg”,foomsg) } 返回errors.new(fmt.sprintf(“未知消息”)) }

规格:=&protocols.spec 姓名:“福”, 版本:1, 最大尺寸:1024, 消息:[]接口 FoMsg{} } }

协议:=&p2p.协议 名称:规格名称, 版本:规范版本, 长度:uint64(len(spec.messages)), 运行:func(p*p2p.peer,rw p2p.msgreadwriter)错误 p p:=protocols.newpeer(p,rw,spec) 返回PP.RUN(Foohandler) } }

func实现() cfg:=pss.newclientconfig()。 psc:=pss.newclient(context.background(),nil,cfg) 错误:=psc.start()) 如果犯错!= nIL{ log.crit(“无法启动PSS客户端”) 退出(1) }

log.debug(“连接到PSS节点”,“bzz addr”,psc.baseaddr)

err=psc.runprotocol(协议) 如果犯错!= nIL{ log.crit(“无法在PSS WebSocket上启动协议”) 退出(1) }

地址:=pot.randomaddress()//当然应该是一个真实地址 psc.addpsspeer(地址,规格)

//使用协议

停止() }

bug(测试):由于蜂群蜂巢中的死锁问题,测试超时

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	BaseAddrHex string
	// contains filtered or unexported fields
}

PSS客户端通过PSS RPC API提供devp2p仿真, 允许从不同的进程访问PSS方法

func NewClient

func NewClient(rpcurl string) (*Client, error)

自定义构造函数

提供对RPC对象的直接访问

func NewClientWithRPC

func NewClientWithRPC(rpcclient *rpc.Client) (*Client, error)

主要施工单位

“rpc client”参数允许传递内存中的RPC客户端充当远程WebSocket RPC。

func (*Client) AddPssPeer

func (c *Client) AddPssPeer(pubkeyid string, addr []byte, spec *protocols.Spec) error

添加PSS对等(公钥)并在其上运行协议

具有匹配主题的client.runprotocol必须 在添加对等机之前运行,否则此方法将 返回一个错误。

密钥必须存在于PSS节点的密钥存储中 在添加对等机之前。该方法将返回一个错误 如果不是。

func (*Client) Close

func (c *Client) Close() error

始终调用此函数以确保我们干净地退出

func (*Client) RemovePssPeer

func (c *Client) RemovePssPeer(pubkeyid string, spec *protocols.Spec)

删除PSS对等

TODO:底层清理

func (*Client) RunProtocol

func (c *Client) RunProtocol(ctx context.Context, proto *p2p.Protocol) error

在PSS连接上安装新的devp2p protcool

协议别名为“PSS主题” 使用来自p2p/协议包的普通devp2p发送和传入消息处理程序例程

当从客户端尚不知道的对等端接收到传入消息时, 这个对等对象被实例化,并且协议在它上面运行。

Jump to

Keyboard shortcuts

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