diff --git a/platform/fabric/chaincode.go b/platform/fabric/chaincode.go index d1b7d7e7c..769152777 100644 --- a/platform/fabric/chaincode.go +++ b/platform/fabric/chaincode.go @@ -15,36 +15,18 @@ import ( "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" ) +// Envelope models a fabric envelope type Envelope struct { - e driver.Envelope + driver.Envelope } -func (e *Envelope) Bytes() ([]byte, error) { - return e.e.Bytes() -} - -func (e *Envelope) FromBytes(raw []byte) error { - return e.e.FromBytes(raw) -} - -func (e *Envelope) Results() []byte { - return e.e.Results() -} - -func (e *Envelope) TxID() string { - return e.e.TxID() -} - -func (e *Envelope) Nonce() []byte { - return e.e.Nonce() -} - -func (e *Envelope) Creator() []byte { - return e.e.Creator() +// NewEnvelope returns a new instance of Envelope that wraps the given driver implementation. +func NewEnvelope(e driver.Envelope) *Envelope { + return &Envelope{Envelope: e} } func (e *Envelope) MarshalJSON() ([]byte, error) { - raw, err := e.e.Bytes() + raw, err := e.Bytes() if err != nil { return nil, err } @@ -57,11 +39,11 @@ func (e *Envelope) UnmarshalJSON(raw []byte) error { if err != nil { return err } - return e.e.FromBytes(r) + return e.FromBytes(r) } func (e *Envelope) String() string { - return e.e.String() + return e.Envelope.String() } type Chaincode struct { @@ -264,7 +246,7 @@ func (i *ChaincodeEndorse) Call() (*Envelope, error) { if err != nil { return nil, err } - return &Envelope{e: env}, nil + return NewEnvelope(env), nil } func (i *ChaincodeEndorse) WithContext(context context.Context) *ChaincodeEndorse { diff --git a/platform/fabric/ordering.go b/platform/fabric/ordering.go index 4e732b7aa..24d65d1da 100644 --- a/platform/fabric/ordering.go +++ b/platform/fabric/ordering.go @@ -19,7 +19,7 @@ type Ordering struct { func (n *Ordering) Broadcast(context context.Context, blob interface{}) error { switch b := blob.(type) { case *Envelope: - return n.network.OrderingService().Broadcast(context, b.e) + return n.network.OrderingService().Broadcast(context, b.Envelope) case *Transaction: return n.network.OrderingService().Broadcast(context, b.tx) default: diff --git a/platform/fabric/services/endorser/builder.go b/platform/fabric/services/endorser/builder.go index b0d944d4b..afd870ef3 100644 --- a/platform/fabric/services/endorser/builder.go +++ b/platform/fabric/services/endorser/builder.go @@ -12,25 +12,24 @@ import ( "github.com/hyperledger-labs/fabric-smart-client/pkg/utils/errors" "github.com/hyperledger-labs/fabric-smart-client/platform/common/services/logging" "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" - view2 "github.com/hyperledger-labs/fabric-smart-client/platform/view/services" - "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/comm/session" + "github.com/hyperledger-labs/fabric-smart-client/platform/view/services" "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" ) var logger = logging.MustGetLogger() type Builder struct { - sp view2.Provider + sp services.Provider } -func NewBuilder(context view.Context) *Builder { - if context == nil { - panic("context must be set") +func NewBuilder(sp services.Provider) *Builder { + if sp == nil { + panic("service provider must be set") } - return &Builder{sp: context} + return &Builder{sp: sp} } -func NewBuilderWithServiceProvider(sp view2.Provider) *Builder { +func NewBuilderWithServiceProvider(sp services.Provider) *Builder { if sp == nil { panic("service provider must be set") } @@ -161,7 +160,7 @@ func NewTransactionWithSigner(context view.Context, network, channel string, id return txBuilder, tx, nil } -func NewTransactionWith(ctx context.Context, sp view2.Provider, network, channel string, id view.Identity) (*Builder, *Transaction, error) { +func NewTransactionWith(ctx context.Context, sp services.Provider, network, channel string, id view.Identity) (*Builder, *Transaction, error) { txBuilder := NewBuilderWithServiceProvider(sp) tx, err := txBuilder.newTransaction(ctx, id, network, channel, nil, nil, false) if err != nil { @@ -170,7 +169,7 @@ func NewTransactionWith(ctx context.Context, sp view2.Provider, network, channel return txBuilder, tx, nil } -func NewTransactionFromEnvelopeBytes(ctx context.Context, sp view2.Provider, bytes []byte) (*Builder, *Transaction, error) { +func NewTransactionFromEnvelopeBytes(ctx context.Context, sp services.Provider, bytes []byte) (*Builder, *Transaction, error) { txBuilder := NewBuilderWithServiceProvider(sp) tx, err := txBuilder.NewTransactionFromEnvelopeBytes(ctx, bytes) if err != nil { @@ -178,8 +177,3 @@ func NewTransactionFromEnvelopeBytes(ctx context.Context, sp view2.Provider, byt } return txBuilder, tx, nil } - -func ReceiveTransaction(context view.Context) (*Transaction, error) { - _, tx, err := NewTransactionFromBytes(context, session.ReadFirstMessageOrPanic(context)) - return tx, err -} diff --git a/platform/fabric/services/endorser/endorsement_proposal.go b/platform/fabric/services/endorser/endorsement_proposal.go index a6e52d585..7d62de545 100644 --- a/platform/fabric/services/endorser/endorsement_proposal.go +++ b/platform/fabric/services/endorser/endorsement_proposal.go @@ -15,6 +15,16 @@ import ( "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" ) +// EndorsementsOnProposalTransaction models a transaction on which to collect endorsements on the transaction's proposal +type EndorsementsOnProposalTransaction interface { + Network() string + EndorseProposalResponseWithIdentity(id view.Identity) error + ProposalResponses() ([][]byte, error) + Bytes() ([]byte, error) + ID() string + AppendProposalResponse(response *fabric.ProposalResponse) error +} + type Response struct { ProposalResponses [][]byte } @@ -26,7 +36,7 @@ type answer struct { } type parallelCollectEndorsementsOnProposalView struct { - tx *Transaction + tx EndorsementsOnProposalTransaction parties []view.Identity timeout time.Duration @@ -118,11 +128,11 @@ func (c *parallelCollectEndorsementsOnProposalView) collectEndorsement( } type endorsementsOnProposalResponderView struct { - tx *Transaction + tx EndorsementsOnProposalTransaction identities []view.Identity } -func NewEndorsementOnProposalResponderView(tx *Transaction, identities ...view.Identity) *endorsementsOnProposalResponderView { +func NewEndorsementOnProposalResponderView(tx EndorsementsOnProposalTransaction, identities ...view.Identity) *endorsementsOnProposalResponderView { return &endorsementsOnProposalResponderView{tx: tx, identities: identities} } diff --git a/platform/fabric/services/endorser/finality.go b/platform/fabric/services/endorser/finality.go index 49753a478..6f21701b3 100644 --- a/platform/fabric/services/endorser/finality.go +++ b/platform/fabric/services/endorser/finality.go @@ -12,15 +12,15 @@ import ( "time" "github.com/hyperledger-labs/fabric-smart-client/pkg/utils/errors" - driver2 "github.com/hyperledger-labs/fabric-smart-client/platform/common/driver" + cdriver "github.com/hyperledger-labs/fabric-smart-client/platform/common/driver" "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" ) type Finality struct { - TxID driver2.TxID - Network driver2.Network - Channel driver2.Channel + TxID cdriver.TxID + Network cdriver.Network + Channel cdriver.Channel } type finalityView struct { diff --git a/platform/fabric/services/endorser/flow.go b/platform/fabric/services/endorser/flow.go index 1b8199602..d3f85294b 100644 --- a/platform/fabric/services/endorser/flow.go +++ b/platform/fabric/services/endorser/flow.go @@ -8,7 +8,6 @@ package endorser import ( "github.com/hyperledger-labs/fabric-smart-client/pkg/utils/errors" - "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" ) diff --git a/platform/fabric/services/endorser/stream.go b/platform/fabric/services/endorser/namespace.go similarity index 100% rename from platform/fabric/services/endorser/stream.go rename to platform/fabric/services/endorser/namespace.go diff --git a/platform/fabric/services/endorser/signer.go b/platform/fabric/services/endorser/signer.go deleted file mode 100644 index 5d52ccde6..000000000 --- a/platform/fabric/services/endorser/signer.go +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright IBM Corp. All Rights Reserved. - -SPDX-License-Identifier: Apache-2.0 -*/ - -package endorser - -type SerializableSigner interface { - Sign(message []byte) ([]byte, error) - - Serialize() ([]byte, error) -} diff --git a/platform/fabric/transaction.go b/platform/fabric/transaction.go index 57ef50fe7..41ddc361b 100644 --- a/platform/fabric/transaction.go +++ b/platform/fabric/transaction.go @@ -110,6 +110,11 @@ type ProposalResponse struct { pr driver.ProposalResponse } +// NewProposalResponse returns a new instance of ProposalResponse for the passed arguments +func NewProposalResponse(pr driver.ProposalResponse) *ProposalResponse { + return &ProposalResponse{pr: pr} +} + func (r *ProposalResponse) ResponseStatus() int32 { return r.pr.ResponseStatus() } @@ -187,6 +192,11 @@ type Transaction struct { tx driver.Transaction } +// NewTransaction returns a new instance of Transaction for the given arguments +func NewTransaction(fns *NetworkService, tx driver.Transaction) *Transaction { + return &Transaction{fns: fns, tx: tx} +} + func (t *Transaction) Creator() view.Identity { return t.tx.Creator() } @@ -368,7 +378,7 @@ func (t *Transaction) Envelope() (*Envelope, error) { if err != nil { return nil, err } - return &Envelope{e: env}, nil + return NewEnvelope(env), nil } type TransactionManager struct { @@ -376,7 +386,7 @@ type TransactionManager struct { } func (t *TransactionManager) NewEnvelope() *Envelope { - return &Envelope{e: t.fns.fns.TransactionManager().NewEnvelope()} + return NewEnvelope(t.fns.fns.TransactionManager().NewEnvelope()) } func (t *TransactionManager) NewProposalResponseFromBytes(raw []byte) (*ProposalResponse, error) {