github.com/Hnampk/fabric@v2.1.1+incompatible/gossip/api/channel.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package api 8 9 import ( 10 "github.com/hyperledger/fabric/gossip/common" 11 ) 12 13 //go:generate mockery -dir . -name SecurityAdvisor -case underscore -output mocks/ 14 15 // SecurityAdvisor defines an external auxiliary object 16 // that provides security and identity related capabilities 17 type SecurityAdvisor interface { 18 // OrgByPeerIdentity returns the OrgIdentityType 19 // of a given peer identity. 20 // If any error occurs, nil is returned. 21 // This method does not validate peerIdentity. 22 // This validation is supposed to be done appropriately during the execution flow. 23 OrgByPeerIdentity(PeerIdentityType) OrgIdentityType 24 } 25 26 // ChannelNotifier is implemented by the gossip component and is used for the peer 27 // layer to notify the gossip component of a JoinChannel event 28 type ChannelNotifier interface { 29 JoinChannel(joinMsg JoinChannelMessage, channelID common.ChannelID) 30 } 31 32 // JoinChannelMessage is the message that asserts a creation or mutation 33 // of a channel's membership list, and is the message that is gossipped 34 // among the peers 35 type JoinChannelMessage interface { 36 37 // SequenceNumber returns the sequence number of the configuration block 38 // the JoinChannelMessage originated from 39 SequenceNumber() uint64 40 41 // Members returns the organizations of the channel 42 Members() []OrgIdentityType 43 44 // AnchorPeersOf returns the anchor peers of the given organization 45 AnchorPeersOf(org OrgIdentityType) []AnchorPeer 46 } 47 48 // AnchorPeer is an anchor peer's certificate and endpoint (host:port) 49 type AnchorPeer struct { 50 Host string // Host is the hostname/ip address of the remote peer 51 Port int // Port is the port the remote peer is listening on 52 } 53 54 // OrgIdentityType defines the identity of an organization 55 type OrgIdentityType []byte