feed

package
v0.0.0-...-39cdb81 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2019 License: GPL-3.0 Imports: 20 Imported by: 0

Documentation

Overview

处理程序是源的API 它支持创建、更新、同步和检索源更新及其数据

Index

Constants

View Source
const (
	ErrInit = iota
	ErrNotFound
	ErrIO
	ErrUnauthorized
	ErrInvalidValue
	ErrDataOverflow
	ErrNothingToReturn
	ErrCorruptData
	ErrInvalidSignature
	ErrNotSynced
	ErrPeriodDepth
	ErrCnt
)
View Source
const MaxUpdateDataLength = chunk.DefaultSize - signatureLength - idLength - headerLength

maxupdatedatalength指示源更新的最大负载大小

View Source
const ProtocolVersion uint8 = 0

ProtocolVersion定义将包含在每个更新消息中的协议的当前版本

View Source
const TopicLength = storage.AddressLength

topic length建立主题字符串的最大长度

Variables

View Source
var ErrTopicTooLong = fmt.Errorf("Topic is too long. Max length is %d", TopicLength)

创建名称/相关内容太长的主题时返回errtopictolong

View Source
var TimestampProvider timestampProvider = NewDefaultTimestampProvider()

TimestampProvider设置源包的时间源

Functions

func Hex

func Hex(bin binarySerializer) string

十六进制序列化结构并将其转换为十六进制字符串

func NewError

func NewError(code int, s string) error

newError用指定的代码和自定义错误消息创建一个新的swarm feeds错误对象

func NewErrorf

func NewErrorf(code int, format string, args ...interface{}) error

newerrorf是newerror的一个方便版本,它包含了printf样式的格式。

Types

type DefaultTimestampProvider

type DefaultTimestampProvider struct {
}

DefaultTimestampProvider是使用系统时间的TimestampProvider 作为时间来源

func NewDefaultTimestampProvider

func NewDefaultTimestampProvider() *DefaultTimestampProvider

NewDefaultTimestampProvider创建基于系统时钟的时间戳提供程序

func (*DefaultTimestampProvider) Now

现在根据此提供程序返回当前时间

type Error

type Error struct {
	// contains filtered or unexported fields
}

错误是用于Swarm提要的类型化错误对象

func (*Error) Code

func (e *Error) Code() int

代码返回错误代码 错误代码在feeds包中的error.go文件中枚举。

func (*Error) Error

func (e *Error) Error() string

错误实现错误接口

type Feed

type Feed struct {
	Topic Topic          `json:"topic"`
	User  common.Address `json:"user"`
}

源表示特定用户对主题的更新流

func (*Feed) AppendValues

func (f *Feed) AppendValues(values Values)

AppendValues将此结构序列化到提供的字符串键值存储区中 用于生成查询字符串

func (*Feed) FromValues

func (f *Feed) FromValues(values Values) (err error)

FromValues从字符串键值存储中反序列化此实例 用于分析查询字符串

func (*Feed) Hex

func (f *Feed) Hex() string

十六进制将提要序列化为十六进制字符串

type GenericSigner

type GenericSigner struct {
	PrivKey *ecdsa.PrivateKey
	// contains filtered or unexported fields
}

GenericSigner实现了签名者接口 在大多数情况下,可能应该使用普通签名者。

func NewGenericSigner

func NewGenericSigner(privKey *ecdsa.PrivateKey) *GenericSigner

NewGenericSigner生成一个签名者,该签名者将使用提供的私钥对所有内容进行签名。

func (*GenericSigner) Address

func (s *GenericSigner) Address() common.Address

地址返回签名者私钥的公钥

func (*GenericSigner) Sign

func (s *GenericSigner) Sign(data common.Hash) (signature Signature, err error)

在提供的数据上签名 它包装了ethereum crypto.sign()方法

type Handler

type Handler struct {
	HashSize int
	// contains filtered or unexported fields
}

func NewHandler

func NewHandler(params *HandlerParams) *Handler

NewHandler创建了一个新的Swarm Feeds API

func (*Handler) GetContent

func (h *Handler) GetContent(feed *Feed) (storage.Address, []byte, error)

getContent检索源的上次同步更新的数据负载

func (*Handler) Lookup

func (h *Handler) Lookup(ctx context.Context, query *Query) (*cacheEntry, error)

查找检索特定或最新的源更新 根据“query”的配置,查找的工作方式不同 请参阅“query”文档和帮助器函数: `newquerylatest`和'newquery`

func (*Handler) NewRequest

func (h *Handler) NewRequest(ctx context.Context, feed *Feed) (request *Request, err error)

NewRequest准备一个请求结构,其中包含 只需添加所需数据并签名即可。 然后可以对生成的结构进行签名并将其传递给handler.update以进行验证并发送

func (*Handler) SetStore

func (h *Handler) SetStore(store *storage.NetStore)

setstore为swarm feeds api设置存储后端

func (*Handler) Update

func (h *Handler) Update(ctx context.Context, r *Request) (updateAddr storage.Address, err error)

更新发布源更新 请注意,提要更新不能跨越块,因此具有最大净长度4096,包括更新头数据和签名。 这将导致最大负载为“maxupdatedatalength”(有关详细信息,请检查update.go) 如果区块负载的总长度将超过此限制,则返回错误。 更新只能检查调用方是否试图覆盖最新的已知版本,否则它只会将更新 在网络上。

func (*Handler) Validate

func (h *Handler) Validate(chunk storage.Chunk) bool

validate是块验证方法 如果它看起来像一个提要更新,那么块地址将根据更新签名的useraddr进行检查。 它实现了storage.chunkvalidator接口

type HandlerParams

type HandlerParams struct {
}

handlerParams将参数传递给处理程序构造函数newhandler 签名者和时间戳提供程序是必需的参数

type Header struct {
	Version uint8                   //协议版本
	Padding [headerLength - 1]uint8 //留作将来使用
}

header定义包含协议版本字节的更新消息头

type ID

type ID struct {
	Feed         `json:"feed"`
	lookup.Epoch `json:"epoch"`
}

ID唯一标识网络上的更新。

func (*ID) Addr

func (u *ID) Addr() (updateAddr storage.Address)

addr计算与此ID对应的源更新块地址

func (*ID) AppendValues

func (u *ID) AppendValues(values Values)

AppendValues将此结构序列化到提供的字符串键值存储区中 用于生成查询字符串

func (*ID) FromValues

func (u *ID) FromValues(values Values) error

FromValues从字符串键值存储中反序列化此实例 用于分析查询字符串

type Query

type Query struct {
	Feed
	Hint      lookup.Epoch
	TimeLimit uint64
}

查询用于在执行更新查找时指定约束 TimeLimit表示搜索的上限。设置为0表示“现在”

func NewQuery

func NewQuery(feed *Feed, time uint64, hint lookup.Epoch) *Query

newquery构造一个查询结构以在“time”或之前查找更新 如果time==0,将查找最新更新

func NewQueryLatest

func NewQueryLatest(feed *Feed, hint lookup.Epoch) *Query

newquerylatest生成查找参数,以查找源的最新更新

func (*Query) AppendValues

func (q *Query) AppendValues(values Values)

AppendValues将此结构序列化到提供的字符串键值存储区中 用于生成查询字符串

func (*Query) FromValues

func (q *Query) FromValues(values Values) error

FromValues从字符串键值存储中反序列化此实例 用于分析查询字符串

type Request

type Request struct {
	Update    //将放在块上的实际内容,较少签名
	Signature *Signature
	// contains filtered or unexported fields
}

请求表示对订阅源更新消息进行签名或签名的请求

func NewFirstRequest

func NewFirstRequest(topic Topic) *Request

newfirstrequest返回准备好签名的请求以发布第一个源更新

func (*Request) AppendValues

func (r *Request) AppendValues(values Values) []byte

AppendValues将此结构序列化到提供的字符串键值存储区中 用于生成查询字符串

func (*Request) FromValues

func (r *Request) FromValues(values Values, data []byte) error

FromValues从字符串键值存储中反序列化此实例 用于分析查询字符串

func (*Request) GetDigest

func (r *Request) GetDigest() (result common.Hash, err error)

GetDigest创建用于签名的源更新摘要 序列化的负载缓存在.BinaryData中

func (*Request) IsUpdate

func (r *Request) IsUpdate() bool

如果此请求为签名更新建模,或者为签名请求,则is update返回true

func (*Request) MarshalJSON

func (r *Request) MarshalJSON() (rawData []byte, err error)

marshaljson接受更新请求并将其作为json结构编码到字节数组中 实现json.Marshaler接口

func (*Request) SetData

func (r *Request) SetData(data []byte)

setdata存储提要更新将使用的有效负载数据

func (*Request) Sign

func (r *Request) Sign(signer Signer) error

签名执行签名以验证更新消息

func (*Request) UnmarshalJSON

func (r *Request) UnmarshalJSON(rawData []byte) error

unmarshaljson接受存储在字节数组中的json结构并填充请求对象 实现json.unmasheler接口

func (*Request) Verify

func (r *Request) Verify() (err error)

验证签名是否有效

type Signature

type Signature [signatureLength]byte

签名是具有签名大小的静态字节数组的别名

type Signer

type Signer interface {
	Sign(common.Hash) (Signature, error)
	Address() common.Address
}

签名者签名源更新有效负载

type TestHandler

type TestHandler struct {
	*Handler
}

func NewTestHandler

func NewTestHandler(datadir string, params *HandlerParams) (*TestHandler, error)

NewTestHandler创建用于测试的处理程序对象。

func (*TestHandler) Close

func (t *TestHandler) Close()

type Timestamp

type Timestamp struct {
	Time uint64 `json:"time"` //unix epoch时间戳(秒)
}

timestamp将时间点编码为unix epoch

func (*Timestamp) MarshalJSON

func (t *Timestamp) MarshalJSON() ([]byte, error)

marshaljson实现json.marshaller接口

func (*Timestamp) UnmarshalJSON

func (t *Timestamp) UnmarshalJSON(data []byte) error

unmashaljson实现json.unmarshaller接口

type Topic

type Topic [TopicLength]byte

主题表示提要的内容

func NewTopic

func NewTopic(name string, relatedContent []byte) (topic Topic, err error)

new topic从提供的名称和“相关内容”字节数组创建新主题, 将两者合并在一起。 如果RelatedContent或Name长于TopicLength,它们将被截断并返回错误 名称可以是空字符串 相关内容可以为零

func (*Topic) FromHex

func (t *Topic) FromHex(hex string) error

FromHex将把十六进制字符串解析到此主题实例中

func (*Topic) Hex

func (t *Topic) Hex() string

hex将返回编码为十六进制字符串的主题

func (*Topic) MarshalJSON

func (t *Topic) MarshalJSON() ([]byte, error)

marshaljson实现json.marshaller接口

func (*Topic) Name

func (t *Topic) Name(relatedContent []byte) string

name将尝试从主题中提取主题名称

func (*Topic) UnmarshalJSON

func (t *Topic) UnmarshalJSON(data []byte) error

unmashaljson实现json.unmarshaller接口

type Update

type Update struct {
	Header Header //
	ID            //源更新识别信息
	// contains filtered or unexported fields
}

更新将作为源更新的一部分发送的信息封装起来。

func (*Update) AppendValues

func (r *Update) AppendValues(values Values) []byte

AppendValues将此结构序列化到提供的字符串键值存储区中 用于生成查询字符串

func (*Update) FromValues

func (r *Update) FromValues(values Values, data []byte) error

FromValues从字符串键值存储中反序列化此实例 用于分析查询字符串

type Values

type Values interface {
	Get(key string) string
	Set(key, value string)
}

值接口表示字符串键值存储 用于生成查询字符串

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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