github.com/s7techlab/cckit@v0.10.5/gateway/chaincode_service.go (about)

     1  package gateway
     2  
     3  import (
     4  	"context"
     5  	"time"
     6  
     7  	"github.com/hyperledger/fabric-protos-go/peer"
     8  
     9  	"github.com/s7techlab/cckit/router"
    10  	"github.com/s7techlab/cckit/sdk"
    11  )
    12  
    13  const EventListStreamTimeout = 500 * time.Millisecond
    14  
    15  var _ ChaincodeServiceServer = &ChaincodeService{}
    16  
    17  type ChaincodeService struct {
    18  	SDK          sdk.SDK
    19  	EventService *ChaincodeEventService
    20  }
    21  
    22  // Deprecated: use NewChaincodeService instead
    23  func New(sdk sdk.SDK) *ChaincodeService {
    24  	return NewChaincodeService(sdk)
    25  }
    26  
    27  func NewChaincodeService(sdk sdk.SDK) *ChaincodeService {
    28  	ccService := &ChaincodeService{
    29  		SDK:          sdk,
    30  		EventService: NewChaincodeEventService(sdk),
    31  	}
    32  
    33  	return ccService
    34  }
    35  
    36  func NewChaincodeEventService(eventDelivery sdk.EventDelivery) *ChaincodeEventService {
    37  	eventService := &ChaincodeEventService{
    38  		EventDelivery: eventDelivery,
    39  	}
    40  
    41  	return eventService
    42  }
    43  
    44  // InstanceService returns ChaincodeInstanceService for current Peer interface and provided channel and chaincode name
    45  func (cs *ChaincodeService) InstanceService(locator *ChaincodeLocator, opts ...Opt) *ChaincodeInstanceService {
    46  	return NewChaincodeInstanceService(cs.SDK, locator, opts...)
    47  }
    48  
    49  // ServiceDef returns service definition
    50  func (cs *ChaincodeService) ServiceDef() ServiceDef {
    51  	return ServiceDef{
    52  		Desc:                        &_ChaincodeService_serviceDesc,
    53  		Service:                     cs,
    54  		HandlerFromEndpointRegister: RegisterChaincodeServiceHandlerFromEndpoint,
    55  	}
    56  }
    57  
    58  func (cs *ChaincodeService) Exec(ctx context.Context, req *ChaincodeExecRequest) (*peer.Response, error) {
    59  	if err := router.ValidateRequest(req); err != nil {
    60  		return nil, err
    61  	}
    62  
    63  	return cs.InstanceService(req.Locator).Exec(ctx, &ChaincodeInstanceExecRequest{
    64  		Type: req.Type, Input: req.Input})
    65  }
    66  
    67  func (cs *ChaincodeService) Invoke(ctx context.Context, req *ChaincodeInvokeRequest) (*peer.Response, error) {
    68  	if err := router.ValidateRequest(req); err != nil {
    69  		return nil, err
    70  	}
    71  
    72  	return cs.InstanceService(req.Locator).Invoke(ctx, &ChaincodeInstanceInvokeRequest{Input: req.Input})
    73  }
    74  
    75  func (cs *ChaincodeService) Query(ctx context.Context, req *ChaincodeQueryRequest) (*peer.Response, error) {
    76  	if err := router.ValidateRequest(req); err != nil {
    77  		return nil, err
    78  	}
    79  
    80  	return cs.InstanceService(req.Locator).Query(ctx, &ChaincodeInstanceQueryRequest{Input: req.Input})
    81  }
    82  
    83  func (cs *ChaincodeService) EventsStream(req *ChaincodeEventsStreamRequest, stream ChaincodeService_EventsStreamServer) error {
    84  	if err := router.ValidateRequest(req); err != nil {
    85  		return err
    86  	}
    87  	return cs.EventService.EventsStream(req, stream)
    88  
    89  }
    90  
    91  func (cs *ChaincodeService) Events(ctx context.Context, req *ChaincodeEventsRequest) (*ChaincodeEvents, error) {
    92  	if err := router.ValidateRequest(req); err != nil {
    93  		return nil, err
    94  	}
    95  	return cs.EventService.Events(ctx, req)
    96  }
    97  
    98  func (cs *ChaincodeService) EventsChan(
    99  	ctx context.Context, req *ChaincodeEventsStreamRequest) (_ chan *ChaincodeEvent, closer func() error, _ error) {
   100  	if err := router.ValidateRequest(req); err != nil {
   101  		return nil, nil, err
   102  	}
   103  
   104  	return cs.EventService.EventsChan(ctx, req)
   105  }