go_study/fabric-main/discovery/support/support.go

104 lines
2.9 KiB
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package support
import (
"github.com/hyperledger/fabric/common/channelconfig"
"github.com/hyperledger/fabric/common/configtx"
"github.com/hyperledger/fabric/common/policies"
"github.com/hyperledger/fabric/discovery"
"github.com/hyperledger/fabric/discovery/support/acl"
"github.com/hyperledger/fabric/discovery/support/config"
"github.com/hyperledger/fabric/msp"
)
//go:generate mockery -dir . -name GossipSupport -case underscore -output mocks/
// GossipSupport is the local interface used to generate mocks for foreign interface.
type GossipSupport interface {
discovery.GossipSupport
}
//go:generate mockery -dir . -name ChannelPolicyManagerGetter -case underscore -output mocks/
// ChannelPolicyManagerGetter is the local interface used to generate mocks for foreign interface.
type ChannelPolicyManagerGetter interface {
acl.ChannelPolicyManagerGetter
}
//go:generate mockery -dir . -name PolicyManager -case underscore -output mocks/
type PolicyManager interface {
policies.Manager
}
//go:generate counterfeiter -o mocks/channel_config_getter.go --fake-name ChannelConfigGetter . channelConfigGetter
type channelConfigGetter interface {
acl.ChannelConfigGetter
}
//go:generate counterfeiter -o mocks/config_getter.go --fake-name ConfigGetter . configGetter
type configGetter interface {
config.CurrentConfigGetter
}
//go:generate counterfeiter -o mocks/configtx_validator.go --fake-name ConfigtxValidator . configtxValidator
type configtxValidator interface {
configtx.Validator
}
//go:generate counterfeiter -o mocks/evaluator.go --fake-name Evaluator . evaluator
type evaluator interface {
acl.Evaluator
}
//go:generate counterfeiter -o mocks/identity.go --fake-name Identity . identity
type identity interface {
msp.Identity
}
//go:generate counterfeiter -o mocks/msp_manager.go --fake-name MSPManager . mspManager
type mspManager interface {
msp.MSPManager
}
//go:generate counterfeiter -o mocks/resources.go --fake-name Resources . resources
type resources interface {
channelconfig.Resources
}
//go:generate counterfeiter -o mocks/verifier.go --fake-name Verifier . verifier
type verifier interface {
acl.Verifier
}
// DiscoverySupport aggregates all the support needed for the discovery service
type DiscoverySupport struct {
discovery.AccessControlSupport
discovery.GossipSupport
discovery.EndorsementSupport
discovery.ConfigSupport
discovery.ConfigSequenceSupport
}
// NewDiscoverySupport returns an aggregated discovery support
func NewDiscoverySupport(
access discovery.AccessControlSupport,
gossip discovery.GossipSupport,
endorsement discovery.EndorsementSupport,
config discovery.ConfigSupport,
sequence discovery.ConfigSequenceSupport,
) *DiscoverySupport {
return &DiscoverySupport{
AccessControlSupport: access,
GossipSupport: gossip,
EndorsementSupport: endorsement,
ConfigSupport: config,
ConfigSequenceSupport: sequence,
}
}