@@ -19,13 +19,15 @@ import (
1919 "github.com/hyperledger-labs/fabric-token-sdk/token/services/logging"
2020)
2121
22+ var logger = logging .MustGetLogger ()
23+
2224type CallbackFunc func (tms driver.TokenManagerService , network , channel , namespace string ) error
2325
2426type PublicParametersStorage interface {
2527 PublicParams (ctx context.Context , networkID string , channel string , namespace string ) ([]byte , error )
2628}
2729
28- type ConfigProvider interface {
30+ type ConfigService interface {
2931 Configurations () ([]driver.Configuration , error )
3032 ConfigurationFor (network string , channel string , namespace string ) (driver.Configuration , error )
3133}
@@ -37,8 +39,7 @@ type PublicParameters struct {
3739// TMSProvider is a token management service provider.
3840// It is responsible for creating token management services for different networks.
3941type TMSProvider struct {
40- logger logging.Logger
41- configProvider ConfigProvider
42+ configService ConfigService
4243 publicParametersStorage PublicParametersStorage
4344 callback CallbackFunc
4445 tokenDriverService * TokenDriverService
@@ -47,10 +48,13 @@ type TMSProvider struct {
4748 services map [string ]driver.TokenManagerService
4849}
4950
50- func NewTMSProvider (logger logging.Logger , configProvider ConfigProvider , pps PublicParametersStorage , tokenDriverService * TokenDriverService ) * TMSProvider {
51+ func NewTMSProvider (
52+ configService ConfigService ,
53+ pps PublicParametersStorage ,
54+ tokenDriverService * TokenDriverService ,
55+ ) * TMSProvider {
5156 ms := & TMSProvider {
52- logger : logger ,
53- configProvider : configProvider ,
57+ configService : configService ,
5458 publicParametersStorage : pps ,
5559 services : map [string ]driver.TokenManagerService {},
5660 tokenDriverService : tokenDriverService ,
@@ -70,7 +74,7 @@ func (m *TMSProvider) GetTokenManagerService(opts driver.ServiceOptions) (servic
7074 }
7175
7276 key := tmsKey (opts )
73- m . logger .Debugf ("check existence token manager service for [%s] with key [%s]" , opts , key )
77+ logger .Debugf ("check existence token manager service for [%s] with key [%s]" , opts , key )
7478 m .lock .RLock ()
7579 service , ok := m .services [key ]
7680 if ok {
@@ -79,18 +83,18 @@ func (m *TMSProvider) GetTokenManagerService(opts driver.ServiceOptions) (servic
7983 }
8084 m .lock .RUnlock ()
8185
82- m . logger .Debugf ("lock to create token manager service for [%s] with key [%s]" , opts , key )
86+ logger .Debugf ("lock to create token manager service for [%s] with key [%s]" , opts , key )
8387
8488 m .lock .Lock ()
8589 defer m .lock .Unlock ()
8690
8791 service , ok = m .services [key ]
8892 if ok {
89- m . logger .Debugf ("token manager service for [%s] with key [%s] exists, return it" , opts , key )
93+ logger .Debugf ("token manager service for [%s] with key [%s] exists, return it" , opts , key )
9094 return service , nil
9195 }
9296
93- m . logger .Debugf ("creating new token manager service for [%s] with key [%s]" , opts , key )
97+ logger .Debugf ("creating new token manager service for [%s] with key [%s]" , opts , key )
9498 service , err = m .getTokenManagerService (opts )
9599 if err != nil {
96100 return nil , err
@@ -106,7 +110,7 @@ func (m *TMSProvider) NewTokenManagerService(opts driver.ServiceOptions) (driver
106110 if len (opts .Namespace ) == 0 {
107111 return nil , errors .Errorf ("namespace not specified" )
108112 }
109- m . logger .Debugf ("creating new token manager service for [%s]" , opts )
113+ logger .Debugf ("creating new token manager service for [%s]" , opts )
110114
111115 service , err := m .newTMS (& opts )
112116 if err != nil {
@@ -127,21 +131,21 @@ func (m *TMSProvider) Update(opts driver.ServiceOptions) (err error) {
127131 }
128132
129133 key := tmsKey (opts )
130- m . logger .Debugf ("update tms for [%s] with key [%s]" , opts , key )
134+ logger .Debugf ("update tms for [%s] with key [%s]" , opts , key )
131135
132136 m .lock .Lock ()
133137 defer m .lock .Unlock ()
134138 service , ok := m .services [key ]
135139 if ! ok {
136- m . logger .Debugf ("no service found, instantiate token management system for [%s:%s:%s] for key [%s]" , opts .Network , opts .Channel , opts .Namespace , key )
140+ logger .Debugf ("no service found, instantiate token management system for [%s:%s:%s] for key [%s]" , opts .Network , opts .Channel , opts .Namespace , key )
137141 } else {
138142 // update only if the public params are different from the current
139143 if bytes .Equal (service .PublicParamsManager ().PublicParamsHash (), hash .Hashable (opts .PublicParams ).Raw ()) {
140- m . logger .Debugf ("service found, no need to update token management system for [%s:%s:%s] for key [%s], public params are the same" , opts .Network , opts .Channel , opts .Namespace , key )
144+ logger .Debugf ("service found, no need to update token management system for [%s:%s:%s] for key [%s], public params are the same" , opts .Network , opts .Channel , opts .Namespace , key )
141145 return nil
142146 }
143147
144- m . logger .Debugf ("service found, unload token management system for [%s:%s:%s] for key [%s] and reload it" , opts .Network , opts .Channel , opts .Namespace , key )
148+ logger .Debugf ("service found, unload token management system for [%s:%s:%s] for key [%s] and reload it" , opts .Network , opts .Channel , opts .Namespace , key )
145149 }
146150
147151 // create the service for the new public params
@@ -159,22 +163,12 @@ func (m *TMSProvider) Update(opts driver.ServiceOptions) (err error) {
159163 return err
160164}
161165
162- func (m * TMSProvider ) Configurations () ([]driver.Configuration , error ) {
163- tmsConfigs , err := m .configProvider .Configurations ()
164- if err != nil {
165- return nil , errors .WithMessagef (err , "failed to get token managers" )
166- }
167- res := make ([]driver.Configuration , len (tmsConfigs ))
168- copy (res , tmsConfigs )
169- return res , nil
170- }
171-
172166func (m * TMSProvider ) SetCallback (callback CallbackFunc ) {
173167 m .callback = callback
174168}
175169
176170func (m * TMSProvider ) getTokenManagerService (opts driver.ServiceOptions ) (service driver.TokenManagerService , err error ) {
177- m . logger .Debugf ("creating new token manager service for [%s]" , opts )
171+ logger .Debugf ("creating new token manager service for [%s]" , opts )
178172 service , err = m .newTMS (& opts )
179173 if err != nil {
180174 return nil , err
@@ -183,7 +177,7 @@ func (m *TMSProvider) getTokenManagerService(opts driver.ServiceOptions) (servic
183177 if m .callback != nil {
184178 err = m .callback (service , opts .Network , opts .Channel , opts .Namespace )
185179 if err != nil {
186- m . logger .Fatalf ("failed to initialize tms for [%s]: [%s]" , opts , err )
180+ logger .Fatalf ("failed to initialize tms for [%s]: [%s]" , opts , err )
187181 }
188182 }
189183 return service , nil
@@ -195,7 +189,7 @@ func (m *TMSProvider) newTMS(opts *driver.ServiceOptions) (driver.TokenManagerSe
195189 return nil , errors .WithMessagef (err , "failed to get driver for [%s]" , opts )
196190 }
197191 opts .PublicParams = ppRaw
198- m . logger .Debugf ("instantiating token service for [%s]" , opts )
192+ logger .Debugf ("instantiating token service for [%s]" , opts )
199193
200194 ts , err := m .tokenDriverService .NewTokenService (driver.TMSID {Network : opts .Network , Channel : opts .Channel , Namespace : opts .Namespace }, opts .PublicParams )
201195 if err != nil {
@@ -213,12 +207,12 @@ func (m *TMSProvider) loadPublicParams(opts *driver.ServiceOptions) ([]byte, err
213207 // 4. public parameters fetcher, if any
214208 for _ , retriever := range []func (options * driver.ServiceOptions ) ([]byte , error ){m .ppFromOpts , m .ppFromStorage , m .ppFromConfig , m .ppFromFetcher } {
215209 if ppRaw , err := retriever (opts ); err != nil {
216- m . logger .Warnf ("failed to retrieve params for [%s]: [%s]" , opts , err )
210+ logger .Warnf ("failed to retrieve params for [%s]: [%s]" , opts , err )
217211 } else if len (ppRaw ) != 0 {
218212 return ppRaw , nil
219213 }
220214 }
221- m . logger .Errorf ("cannot retrieve public params for [%s]: [%s]" , opts , string (debug .Stack ()))
215+ logger .Errorf ("cannot retrieve public params for [%s]: [%s]" , opts , string (debug .Stack ()))
222216 return nil , errors .Errorf ("cannot retrieve public params for [%s]" , opts )
223217}
224218
@@ -241,7 +235,7 @@ func (m *TMSProvider) ppFromStorage(opts *driver.ServiceOptions) ([]byte, error)
241235}
242236
243237func (m * TMSProvider ) ppFromConfig (opts * driver.ServiceOptions ) ([]byte , error ) {
244- tmsConfig , err := m .configProvider .ConfigurationFor (opts .Network , opts .Channel , opts .Namespace )
238+ tmsConfig , err := m .configService .ConfigurationFor (opts .Network , opts .Channel , opts .Namespace )
245239 if err != nil {
246240 return nil , errors .WithMessagef (err , "failed to identify driver from the configuration of [%s], loading driver from public parameters failed too [%s]" , opts , err )
247241 }
@@ -250,7 +244,7 @@ func (m *TMSProvider) ppFromConfig(opts *driver.ServiceOptions) ([]byte, error)
250244 return nil , errors .WithMessagef (err , "failed to unmarshal public parameters" )
251245 }
252246 if len (cPP .Path ) != 0 {
253- m . logger .Infof ("load public parameters from [%s]..." , cPP .Path )
247+ logger .Infof ("load public parameters from [%s]..." , cPP .Path )
254248 ppRaw , err := os .ReadFile (cPP .Path )
255249 if err != nil {
256250 return nil , errors .Errorf ("failed to load public parameters from [%s]: [%s]" , cPP .Path , err )
0 commit comments