@@ -14,11 +14,11 @@ import (
1414 "github.com/golang/protobuf/proto"
1515 "github.com/hyperledger/fabric-sdk-go/pkg/common/context"
1616 "github.com/hyperledger/fabric-sdk-go/pkg/context/api/fab"
17- "github.com/hyperledger/fabric-sdk-go/pkg/fab/channel"
1817 "github.com/hyperledger/fabric-sdk-go/pkg/fab/chconfig"
1918 "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/common"
2019 pb "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/protos/peer"
2120
21+ "github.com/hyperledger/fabric-sdk-go/pkg/fab/channel"
2222 "github.com/hyperledger/fabric-sdk-go/pkg/logging"
2323 "github.com/pkg/errors"
2424)
@@ -35,11 +35,9 @@ const (
3535// An application that requires interaction with multiple channels should create a separate
3636// instance of the ledger client for each channel. Ledger client supports specific queries only.
3737type Client struct {
38- context context.Client
39- discovery fab.DiscoveryService
40- ledger * channel.Ledger
41- filter TargetFilter
42- chName string
38+ context context.Channel
39+ filter TargetFilter
40+ ledger * channel.Ledger
4341}
4442
4543// MSPFilter is default filter
@@ -53,28 +51,21 @@ func (f *MSPFilter) Accept(peer fab.Peer) bool {
5351}
5452
5553// New returns a Client instance.
56- func New (clientProvider context.ClientProvider , channelID string , opts ... ClientOption ) (* Client , error ) {
57-
58- clientContext , err := clientProvider ()
59- if err != nil {
60- return nil , err
61- }
54+ func New (channelProvider context.ChannelProvider , opts ... ClientOption ) (* Client , error ) {
6255
63- l , err := channel . NewLedger ( clientContext , channelID )
56+ channelContext , err := channelProvider ( )
6457 if err != nil {
6558 return nil , err
6659 }
6760
68- discoveryService , err := clientContext . DiscoveryProvider (). CreateDiscoveryService ( channelID )
61+ ledger , err := channel . NewLedger ( channelContext , channelContext . ChannelID () )
6962 if err != nil {
7063 return nil , err
7164 }
7265
7366 ledgerClient := Client {
74- context : clientContext ,
75- discovery : discoveryService ,
76- ledger : l ,
77- chName : channelID ,
67+ context : channelContext ,
68+ ledger : ledger ,
7869 }
7970
8071 for _ , opt := range opts {
@@ -87,10 +78,10 @@ func New(clientProvider context.ClientProvider, channelID string, opts ...Client
8778 // check if target filter was set - if not set the default
8879 if ledgerClient .filter == nil {
8980 // Default target filter is based on user msp
90- if clientContext .MspID () == "" {
81+ if channelContext .MspID () == "" {
9182 return nil , errors .New ("mspID not available in user context" )
9283 }
93- filter := & MSPFilter {mspID : clientContext .MspID ()}
84+ filter := & MSPFilter {mspID : channelContext .MspID ()}
9485 ledgerClient .filter = filter
9586 }
9687
@@ -278,7 +269,7 @@ func (c *Client) QueryConfig(options ...RequestOption) (fab.ChannelCfg, error) {
278269 return nil , errors .WithMessage (err , "failed to determine target peers for QueryConfig" )
279270 }
280271
281- channelConfig , err := chconfig .New (c .context , c .chName , chconfig .WithPeers (targets ), chconfig .WithMinResponses (opts .MinTargets ))
272+ channelConfig , err := chconfig .New (c .context , c .context . ChannelID () , chconfig .WithPeers (targets ), chconfig .WithMinResponses (opts .MinTargets ))
282273 if err != nil {
283274 return nil , errors .WithMessage (err , "QueryConfig failed" )
284275 }
@@ -327,7 +318,7 @@ func (c *Client) calculateTargets(opts Opts) ([]fab.Peer, error) {
327318 var err error
328319 if targets == nil {
329320 // Retrieve targets from discovery
330- targets , err = c .discovery .GetPeers ()
321+ targets , err = c .context . DiscoveryService () .GetPeers ()
331322 if err != nil {
332323 return nil , err
333324 }
0 commit comments