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 }