msgprocessor

package
v0.0.0-...-523a819 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2019 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

包msgprocessor提供处理分类消息的实现 可通过广播进入系统的类型。

Index

Constants

This section is empty.

Variables

View Source
var AcceptRule = Rule(acceptRule{})

AcceptRule始终返回Accept作为Apply的结果

View Source
var EmptyRejectRule = Rule(emptyRejectRule{})

EmptyRejectRule拒绝空消息

View Source
var ErrChannelDoesNotExist = errors.New("channel does not exist")

系统通道返回errChanneldoesNoteList,用于 不用于系统通道ID,并且不尝试创建新通道

View Source
var ErrEmptyMessage = errors.New("Message was empty")

拒绝时,空消息筛选器返回errEmptyMessage。

View Source
var ErrPermissionDenied = errors.New("permission denied")

errPermissionDenied由事务引起的错误返回 由于授权失败而不允许。

Functions

This section is empty.

Types

type ChainCreator

type ChainCreator interface {
	//new channel config返回新通道的模板配置。
	NewChannelConfig(envConfigUpdate *cb.Envelope) (channelconfig.Resources, error)

	//CreateBandle将配置解析为资源
	CreateBundle(channelID string, config *cb.Config) (channelconfig.Resources, error)

	//channelsCount返回当前存在的通道数。
	ChannelsCount() int
}

ChainCreator定义模拟通道创建所需的方法。

type ChannelConfigTemplator

type ChannelConfigTemplator interface {
	//newchannelconfig创建新的模板配置管理器。
	NewChannelConfig(env *cb.Envelope) (channelconfig.Resources, error)
}

ChannelConfigTemplator可用于生成配置模板。

type Classification

type Classification int

分类表示系统可能的消息类型。

const (
	//normalmsg是标准(代言人或其他非配置)消息的类。
	//此类型的消息应由processnormalmsg处理。
	NormalMsg Classification = iota

	//configupdatemsg表示config_update类型的消息。
	//此类型的消息应由processconfigupdatemsg处理。
	ConfigUpdateMsg

	//configmsg表示order_transaction或config类型的消息。
	//此类型的消息应由processconfigmsg处理
	ConfigMsg
)

type DefaultTemplator

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

DefaultTemplator实现了ChannelConfigTemplator接口,是在生产部署中使用的接口。

func NewDefaultTemplator

func NewDefaultTemplator(support DefaultTemplatorSupport) *DefaultTemplator

NewDefaultTemplator返回DefaultTemplator的实例。

func (*DefaultTemplator) NewChannelConfig

func (dt *DefaultTemplator) NewChannelConfig(envConfigUpdate *cb.Envelope) (channelconfig.Resources, error)

new channel config根据订购系统通道中的当前配置创建新的模板通道配置。

type DefaultTemplatorSupport

type DefaultTemplatorSupport interface {
	//consortiums config返回排序系统通道的consortiums配置。
	ConsortiumsConfig() (channelconfig.Consortiums, bool)

	//orderconfig返回排序配置以及配置是否存在
	OrdererConfig() (channelconfig.Orderer, bool)

	//configtxvalidator返回与系统通道当前配置相对应的configtx管理器。
	ConfigtxValidator() configtx.Validator

	//signer返回适合对转发消息进行签名的本地签名者。
	Signer() crypto.LocalSigner
}

DefaultTemplatorSupport是DefaultTemplator所需的通道配置的子集。

type LimitedSupport

type LimitedSupport interface {
	OrdererConfig() (channelconfig.Orderer, bool)
}

LimitedSupport定义SystemChannel筛选器所需的通道资源的子集。

type MaxBytesRule

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

MaxBytesRule实现规则接口。

func NewSizeFilter

func NewSizeFilter(support Support) *MaxBytesRule

新建创建一个大小筛选器,该筛选器拒绝大于maxbytes的邮件

func (*MaxBytesRule) Apply

func (r *MaxBytesRule) Apply(message *cb.Envelope) error

如果消息超过配置的绝对最大批处理大小,则APPLY返回错误。

type Processor

type Processor interface {
	//ClassifyMSG检查消息头以确定需要哪种类型的处理
	ClassifyMsg(chdr *cb.ChannelHeader) Classification

	//processnormalmsg将根据当前配置检查消息的有效性。它返回电流
	//配置序列号,成功时为零,如果消息无效则为错误
	ProcessNormalMsg(env *cb.Envelope) (configSeq uint64, err error)

	//processconfigupdatemsg将尝试将配置更新应用于当前配置,如果成功
	//返回生成的配置消息和从中计算配置的configseq。如果配置更新消息
	//无效,返回错误。
	ProcessConfigUpdateMsg(env *cb.Envelope) (config *cb.Envelope, configSeq uint64, err error)

	//processconfigmsg接受'order_tx'或'config'类型的消息,解压缩嵌入的configupdate信封
	//并调用“processconfigupdatemsg”生成与原始消息类型相同的新配置消息。
	//此方法用于重新验证和复制配置消息,如果它被认为不再有效。
	ProcessConfigMsg(env *cb.Envelope) (*cb.Envelope, uint64, error)
}

处理器提供必要的方法来分类和处理 通过广播接口到达。

type Rule

type Rule interface {
	//应用将规则应用于给定信封,成功或返回错误
	Apply(message *ab.Envelope) error
}

规则定义一个过滤函数,它接受、拒绝或转发(到下一个规则)信封。

func NewExpirationRejectRule

func NewExpirationRejectRule(filterSupport resources) Rule

NewExpirationRejectRule返回拒绝由标识签名的邮件的规则 由于该功能处于活动状态,谁的身份已过期

type RuleSet

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

规则集用于应用规则集合

func CreateStandardChannelFilters

func CreateStandardChannelFilters(filterSupport channelconfig.Resources) *RuleSet

CreateStandardChannelFilters为普通(非系统)链创建一组筛选器

func CreateSystemChannelFilters

func CreateSystemChannelFilters(chainCreator ChainCreator, ledgerResources channelconfig.Resources) *RuleSet

CreateSystemChannelFilters为订购系统链创建一组筛选器。

func NewRuleSet

func NewRuleSet(rules []Rule) *RuleSet

new ruleset使用给定的规则有序列表创建新规则集

func (*RuleSet) Apply

func (rs *RuleSet) Apply(message *ab.Envelope) error

应用按顺序应用为此集指定的规则,在有效时返回nil,在无效时返回err。

type SigFilter

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

sigfilter存储应用于将请求传递到的策略的名称 确定客户是否被授权

func NewSigFilter

func NewSigFilter(policyName string, support SigFilterSupport) *SigFilter

newsigfilter创建一个新的签名筛选器,每次评估时都调用策略管理器 检索策略的最新版本

func (*SigFilter) Apply

func (sf *SigFilter) Apply(message *cb.Envelope) error

应用应用应用给定的策略,导致拒绝或转发,从不接受

type SigFilterSupport

type SigFilterSupport interface {
	//policyManager返回对当前策略管理器的引用
	PolicyManager() policies.Manager
}

sigfiltersupport提供签名筛选器所需的资源

type StandardChannel

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

StandardChannel为标准现有通道实现处理器接口

func NewStandardChannel

func NewStandardChannel(support StandardChannelSupport, filters *RuleSet) *StandardChannel

新建标准消息处理器

func (*StandardChannel) ClassifyMsg

func (s *StandardChannel) ClassifyMsg(chdr *cb.ChannelHeader) Classification

ClassifyMSG检查消息以确定需要哪种类型的处理

func (*StandardChannel) ProcessConfigMsg

func (s *StandardChannel) ProcessConfigMsg(env *cb.Envelope) (config *cb.Envelope, configSeq uint64, err error)

processconfigmsg接受类型为“headertype_config”的信封,并从中解压缩“configendevelope” 从“lastupdate”字段中提取“configupdate”,并对其调用“processconfigupdatemsg”。

func (*StandardChannel) ProcessConfigUpdateMsg

func (s *StandardChannel) ProcessConfigUpdateMsg(env *cb.Envelope) (config *cb.Envelope, configSeq uint64, err error)

processconfigupdatemsg将尝试将config formost msg应用于当前配置,如果成功 返回生成的配置消息和从中计算配置的configseq。如果配置推动消息 无效,返回错误。

func (*StandardChannel) ProcessNormalMsg

func (s *StandardChannel) ProcessNormalMsg(env *cb.Envelope) (configSeq uint64, err error)

processnormalmsg将根据当前配置检查消息的有效性。它返回电流 配置序列号,成功时为零,如果消息无效则为错误

type StandardChannelSupport

type StandardChannelSupport interface {
	//序列应返回当前配置eq
	Sequence() uint64

	//chainID返回通道ID
	ChainID() string

	//签名者返回此订购者的签名者
	Signer() crypto.LocalSigner

	//ProposeConfigUpdate接受config_update类型的信封,并生成
	//将用作配置消息的信封有效负载数据的configendevelope
	ProposeConfigUpdate(configtx *cb.Envelope) (*cb.ConfigEnvelope, error)
}

StandardChannel支持包括StandardChannel处理器所需的资源。

type Support

type Support interface {
	BatchSize() *ab.BatchSize
}

支持定义创建此筛选器所需的通道支持的子集

type SystemChainFilter

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

SystemChainFilter实现了filter.rule接口。

func NewSystemChannelFilter

func NewSystemChannelFilter(ls LimitedSupport, cc ChainCreator) *SystemChainFilter

NewSystemChannelFilter返回*SystemChainFilter的新实例。

func (*SystemChainFilter) Apply

func (scf *SystemChainFilter) Apply(env *cb.Envelope) error

Apply拒绝错误消息。

type SystemChannel

type SystemChannel struct {
	*StandardChannel
	// contains filtered or unexported fields
}

SystemChannel实现系统通道的处理器接口。

func NewSystemChannel

func NewSystemChannel(support StandardChannelSupport, templator ChannelConfigTemplator, filters *RuleSet) *SystemChannel

NewSystemChannel创建新的系统通道消息处理器。

func (*SystemChannel) ProcessConfigMsg

func (s *SystemChannel) ProcessConfigMsg(env *cb.Envelope) (*cb.Envelope, uint64, error)

processconfigmsg采用以下两种类型的信封: -`headertype_config`:系统通道本身是config的目标,我们只需解包'configupdate`。 信封来自'lastupdate'字段,并在基础标准频道上调用'processconfigupdatemsg' -`headertype_order_transaction`:这是一条创建频道的消息,我们打开'configupdate'信封 并在上面运行'processconfigupdatemsg'

func (*SystemChannel) ProcessConfigUpdateMsg

func (s *SystemChannel) ProcessConfigUpdateMsg(envConfigUpdate *cb.Envelope) (config *cb.Envelope, configSeq uint64, err error)

processconfigupdatemsg处理系统通道本身的config_update类型的消息 或者,用于创建通道。在通道创建案例中,配置更新被包装成 订购方事务,在标准配置更新案例中,生成配置消息

func (*SystemChannel) ProcessNormalMsg

func (s *SystemChannel) ProcessNormalMsg(msg *cb.Envelope) (configSeq uint64, err error)

processnormalmsg处理普通消息,如果它们未绑定到系统通道ID,则拒绝它们。 与errChannel无关。

Jump to

Keyboard shortcuts

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