Documentation ¶
Overview ¶
包msgprocessor提供处理分类消息的实现 可通过广播进入系统的类型。
Index ¶
- Variables
- type ChainCreator
- type ChannelConfigTemplator
- type Classification
- type DefaultTemplator
- type DefaultTemplatorSupport
- type LimitedSupport
- type MaxBytesRule
- type Processor
- type Rule
- type RuleSet
- type SigFilter
- type SigFilterSupport
- type StandardChannel
- func (s *StandardChannel) ClassifyMsg(chdr *cb.ChannelHeader) Classification
- func (s *StandardChannel) ProcessConfigMsg(env *cb.Envelope) (config *cb.Envelope, configSeq uint64, err error)
- func (s *StandardChannel) ProcessConfigUpdateMsg(env *cb.Envelope) (config *cb.Envelope, configSeq uint64, err error)
- func (s *StandardChannel) ProcessNormalMsg(env *cb.Envelope) (configSeq uint64, err error)
- type StandardChannelSupport
- type Support
- type SystemChainFilter
- type SystemChannel
- func (s *SystemChannel) ProcessConfigMsg(env *cb.Envelope) (*cb.Envelope, uint64, error)
- func (s *SystemChannel) ProcessConfigUpdateMsg(envConfigUpdate *cb.Envelope) (config *cb.Envelope, configSeq uint64, err error)
- func (s *SystemChannel) ProcessNormalMsg(msg *cb.Envelope) (configSeq uint64, err error)
Constants ¶
This section is empty.
Variables ¶
var AcceptRule = Rule(acceptRule{})
AcceptRule始终返回Accept作为Apply的结果
var EmptyRejectRule = Rule(emptyRejectRule{})
EmptyRejectRule拒绝空消息
var ErrChannelDoesNotExist = errors.New("channel does not exist")
系统通道返回errChanneldoesNoteList,用于 不用于系统通道ID,并且不尝试创建新通道
var ErrEmptyMessage = errors.New("Message was empty")
拒绝时,空消息筛选器返回errEmptyMessage。
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的邮件
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 ¶
规则定义一个过滤函数,它接受、拒绝或转发(到下一个规则)信封。
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为订购系统链创建一组筛选器。
type SigFilter ¶
type SigFilter struct {
// contains filtered or unexported fields
}
sigfilter存储应用于将请求传递到的策略的名称 确定客户是否被授权
func NewSigFilter ¶
func NewSigFilter(policyName string, support SigFilterSupport) *SigFilter
newsigfilter创建一个新的签名筛选器,每次评估时都调用策略管理器 检索策略的最新版本
type SigFilterSupport ¶
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 SystemChainFilter ¶
type SystemChainFilter struct {
// contains filtered or unexported fields
}
SystemChainFilter实现了filter.rule接口。
func NewSystemChannelFilter ¶
func NewSystemChannelFilter(ls LimitedSupport, cc ChainCreator) *SystemChainFilter
NewSystemChannelFilter返回*SystemChainFilter的新实例。
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 ¶
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无关。