Skip to content

Commit 1386727

Browse files
committed
some refactoring
Signed-off-by: Angelo De Caro <[email protected]>
1 parent 380156f commit 1386727

File tree

5 files changed

+64
-13
lines changed

5 files changed

+64
-13
lines changed

token/services/network/fabric/endorsement/fsc/responder.go

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212
"github.com/hyperledger-labs/fabric-smart-client/pkg/utils/errors"
1313
fabric2 "github.com/hyperledger-labs/fabric-smart-client/platform/fabric"
1414
"github.com/hyperledger-labs/fabric-smart-client/platform/fabric/services/endorser"
15-
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/comm/session"
1615
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
1716
token2 "github.com/hyperledger-labs/fabric-token-sdk/token"
1817
"github.com/hyperledger-labs/fabric-token-sdk/token/core/common"
@@ -54,13 +53,27 @@ type Translator interface {
5453

5554
type TranslatorProviderFunc = func(txID string, namespace string, rws *fabric2.RWSet) (Translator, error)
5655

56+
type EndorserService interface {
57+
ReceiveTx(ctx view.Context) (*endorser.Transaction, error)
58+
Endorse(tx *endorser.Transaction, identities ...view.Identity) (any, error)
59+
}
60+
5761
type RequestApprovalResponderView struct {
58-
keyTranslator translator.KeyTranslator
59-
getTranslator TranslatorProviderFunc
62+
endorserService EndorserService
63+
keyTranslator translator.KeyTranslator
64+
getTranslator TranslatorProviderFunc
6065
}
6166

62-
func NewRequestApprovalResponderView(keyTranslator translator.KeyTranslator, getTranslator TranslatorProviderFunc) *RequestApprovalResponderView {
63-
return &RequestApprovalResponderView{keyTranslator: keyTranslator, getTranslator: getTranslator}
67+
func NewRequestApprovalResponderView(
68+
keyTranslator translator.KeyTranslator,
69+
getTranslator TranslatorProviderFunc,
70+
endorserService EndorserService,
71+
) *RequestApprovalResponderView {
72+
return &RequestApprovalResponderView{
73+
keyTranslator: keyTranslator,
74+
getTranslator: getTranslator,
75+
endorserService: endorserService,
76+
}
6477
}
6578

6679
func (r *RequestApprovalResponderView) Call(context view.Context) (interface{}, error) {
@@ -87,14 +100,14 @@ func (r *RequestApprovalResponderView) Call(context view.Context) (interface{},
87100
return r.endorse(context, request)
88101
}
89102

90-
func (r *RequestApprovalResponderView) receive(context view.Context) (*Request, error) {
91-
logger.DebugfContext(context.Context(), "Waiting for transaction on context [%s]", context.ID())
92-
_, tx, err := endorser.NewTransactionFromBytes(context, session.ReadFirstMessageOrPanic(context))
103+
func (r *RequestApprovalResponderView) receive(ctx view.Context) (*Request, error) {
104+
logger.DebugfContext(ctx.Context(), "Waiting for transaction on context [%s]", ctx.ID())
105+
tx, err := r.endorserService.ReceiveTx(ctx)
93106
if err != nil {
94107
return nil, errors.WithMessagef(err, "failed to received transaction for approval")
95108
}
96-
logger.DebugfContext(context.Context(), "Received transaction [%s] for endorsement on context [%s]", tx.ID(), context.ID())
97-
defer logger.DebugfContext(context.Context(), "Return endorsement result for TX [%s]", tx.ID())
109+
logger.DebugfContext(ctx.Context(), "Received transaction [%s] for endorsement on context [%s]", tx.ID(), ctx.ID())
110+
defer logger.DebugfContext(ctx.Context(), "Return endorsement result for TX [%s]", tx.ID())
98111

99112
// validate transient
100113

@@ -111,14 +124,14 @@ func (r *RequestApprovalResponderView) receive(context view.Context) (*Request,
111124
if len(tmsID.Network) == 0 || len(tmsID.Channel) == 0 || len(tmsID.Namespace) == 0 {
112125
return nil, errors.Wrapf(errors.Join(err, ErrInvalidTransient), "invalid tms id [%s]", tmsID)
113126
}
114-
tms, err := token2.GetManagementService(context, token2.WithTMSID(tmsID))
127+
tms, err := token2.GetManagementService(ctx, token2.WithTMSID(tmsID))
115128
if err != nil {
116129
return nil, errors.Wrapf(errors.Join(err, ErrInvalidTransient), "cannot find TMS for [%s]", tmsID)
117130
}
118131
if !tms.ID().Equal(tmsID) {
119132
return nil, errors.Wrapf(errors.Join(err, ErrInvalidTransient), "tms ids do not match")
120133
}
121-
logger.DebugfContext(context.Context(), "evaluate token request on TMS [%s]", tmsID)
134+
logger.DebugfContext(ctx.Context(), "evaluate token request on TMS [%s]", tmsID)
122135

123136
// token request
124137
requestRaw := tx.GetTransient(TransientTokenRequestKey)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/*
2+
Copyright IBM Corp. All Rights Reserved.
3+
4+
SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
package fsc

token/services/network/fabric/endorsement/fsc/service.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,19 @@ func NewEndorsementService(
4747
identityProvider IdentityProvider,
4848
keyTranslator translator.KeyTranslator,
4949
getTranslator TranslatorProviderFunc,
50+
endorserService EndorserService,
5051
) (*EndorsementService, error) {
5152
if configuration.GetBool(AmIAnEndorserKey) {
5253
logger.Debug("this node is an endorser, prepare it...")
5354
if err := namespaceProcessor.EnableTxProcessing(tmsID); err != nil {
5455
return nil, errors.WithMessagef(err, "failed to add namespace to committer [%s]", tmsID)
5556
}
5657
if err := viewRegistry.RegisterResponder(
57-
NewRequestApprovalResponderView(keyTranslator, getTranslator),
58+
NewRequestApprovalResponderView(
59+
keyTranslator,
60+
getTranslator,
61+
endorserService,
62+
),
5863
&RequestApprovalView{},
5964
); err != nil {
6065
return nil, errors.WithMessagef(err, "failed to register approval view for [%s]", tmsID)

token/services/network/fabric/endorsement/provider.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"github.com/hyperledger-labs/fabric-smart-client/pkg/utils/errors"
1111
"github.com/hyperledger-labs/fabric-smart-client/platform/common/utils/lazy"
1212
"github.com/hyperledger-labs/fabric-smart-client/platform/fabric"
13+
"github.com/hyperledger-labs/fabric-smart-client/platform/fabric/services/endorser"
14+
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/comm/session"
1315
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
1416
token2 "github.com/hyperledger-labs/fabric-token-sdk/token"
1517
"github.com/hyperledger-labs/fabric-token-sdk/token/services/logging"
@@ -90,6 +92,7 @@ func (l *loader) load(tmsID token2.TMSID) (Service, error) {
9092
l.keyTranslator,
9193
), nil
9294
},
95+
NewEndorserService(),
9396
)
9497
}
9598

@@ -126,3 +129,25 @@ func (n *NamespaceTxProcessor) EnableTxProcessing(tmsID token2.TMSID) error {
126129

127130
return nil
128131
}
132+
133+
// EndorserService wraps the FSC's endorser service
134+
type EndorserService struct {
135+
}
136+
137+
// NewEndorserService returns a new instance of EndorserService
138+
func NewEndorserService() *EndorserService {
139+
return &EndorserService{}
140+
}
141+
142+
func (e *EndorserService) ReceiveTx(ctx view.Context) (*endorser.Transaction, error) {
143+
_, tx, err := endorser.NewTransactionFromBytes(ctx, session.ReadFirstMessageOrPanic(ctx))
144+
if err != nil {
145+
return nil, errors.WithMessagef(err, "failed to received transaction for approval")
146+
}
147+
return tx, nil
148+
}
149+
150+
func (e *EndorserService) Endorse(tx *endorser.Transaction, identities ...view.Identity) (any, error) {
151+
// TODO implement me
152+
panic("implement me")
153+
}

token/services/network/fabricx/endorsement/esp.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ func (l *loader) load(tmsID token2.TMSID) (endorsement.Service, error) {
8787
l.keyTranslator,
8888
), nil
8989
},
90+
endorsement.NewEndorserService(),
9091
)
9192
}
9293

0 commit comments

Comments
 (0)