@@ -52,9 +52,8 @@ type Operations interface {
52
52
}
53
53
54
54
type Peer struct {
55
- getPolicyManager func (cid string ) policies.Manager
56
- initChain func (cid string )
57
- initialize func (
55
+ initChain func (cid string )
56
+ initialize func (
58
57
init func (string ),
59
58
sccp sysccprovider.SystemChaincodeProvider ,
60
59
mapper plugin.Mapper ,
@@ -72,9 +71,8 @@ type Peer struct {
72
71
// Default provides in implementation of the Peer interface that provides
73
72
// access to the package level state.
74
73
var Default Operations = & Peer {
75
- getPolicyManager : GetPolicyManager ,
76
- initChain : InitChain ,
77
- initialize : Initialize ,
74
+ initChain : InitChain ,
75
+ initialize : Initialize ,
78
76
}
79
77
80
78
func CreateChainFromBlock (
@@ -205,8 +203,19 @@ func (p *Peer) GetMSPIDs(cid string) []string {
205
203
return nil
206
204
}
207
205
208
- func (p * Peer ) GetPolicyManager (cid string ) policies.Manager { return p .getPolicyManager (cid ) }
209
- func (p * Peer ) InitChain (cid string ) { p .initChain (cid ) }
206
+ // GetPolicyManager returns the policy manager of the chain with chain ID. Note that this
207
+ // call returns nil if chain cid has not been created.
208
+ func GetPolicyManager (cid string ) policies.Manager { return Default .GetPolicyManager (cid ) }
209
+ func (p * Peer ) GetPolicyManager (cid string ) policies.Manager {
210
+ chains .RLock ()
211
+ defer chains .RUnlock ()
212
+ if c , ok := chains .list [cid ]; ok {
213
+ return c .cs .PolicyManager ()
214
+ }
215
+ return nil
216
+ }
217
+
218
+ func (p * Peer ) InitChain (cid string ) { p .initChain (cid ) }
210
219
211
220
func (p * Peer ) GetApplicationConfig (cid string ) (channelconfig.Application , bool ) {
212
221
cc := p .GetChannelConfig (cid )
0 commit comments