From 69d7191df07c9bf24370f838ccbdf21e0583a456 Mon Sep 17 00:00:00 2001 From: Bob Stasyszyn Date: Sat, 10 Mar 2018 15:48:10 -0500 Subject: [PATCH] [FAB-8768] Option for block events in InfraProvider Added options in InfraProvider that are passed to the event client. A custom ProviderFactory may be created to pass in those options. Change-Id: I62d10b26b552cee4c6b44e53986df832cb3a9994 Signed-off-by: Bob Stasyszyn --- pkg/fab/events/eventhubclient/opts.go | 7 ++++--- pkg/fabsdk/provider/fabpvdr/fabpvdr.go | 12 ++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/pkg/fab/events/eventhubclient/opts.go b/pkg/fab/events/eventhubclient/opts.go index a8b48d6137..c34fbab63d 100755 --- a/pkg/fab/events/eventhubclient/opts.go +++ b/pkg/fab/events/eventhubclient/opts.go @@ -26,9 +26,10 @@ type params struct { func defaultParams() *params { return ¶ms{ - connProvider: ehConnProvider, - interests: filteredBlockInterests, - respTimeout: 5 * time.Second, + connProvider: ehConnProvider, + interests: blockInterests, + respTimeout: 5 * time.Second, + permitBlockEvents: true, } } diff --git a/pkg/fabsdk/provider/fabpvdr/fabpvdr.go b/pkg/fabsdk/provider/fabpvdr/fabpvdr.go index 4a93b3b22e..3cce44aa2f 100644 --- a/pkg/fabsdk/provider/fabpvdr/fabpvdr.go +++ b/pkg/fabsdk/provider/fabpvdr/fabpvdr.go @@ -9,6 +9,7 @@ package fabpvdr import ( "github.com/hyperledger/fabric-sdk-go/pkg/common/context" "github.com/hyperledger/fabric-sdk-go/pkg/common/lazycache" + "github.com/hyperledger/fabric-sdk-go/pkg/common/options" "github.com/hyperledger/fabric-sdk-go/pkg/context/api/core" "github.com/hyperledger/fabric-sdk-go/pkg/context/api/fab" channelImpl "github.com/hyperledger/fabric-sdk-go/pkg/fab/channel" @@ -50,7 +51,7 @@ type fabContext struct { } // New creates a InfraProvider enabling access to core Fabric objects and functionality. -func New(config core.Config) *InfraProvider { +func New(config core.Config, opts ...options.Opt) *InfraProvider { idleTime := config.TimeoutOrDefault(core.ConnectionIdle) sweepTime := config.TimeoutOrDefault(core.CacheSweepInterval) eventIdleTime := config.TimeoutOrDefault(core.EventServiceIdle) @@ -66,7 +67,7 @@ func New(config core.Config) *InfraProvider { return NewEventClientRef( eventIdleTime, func() (fab.EventClient, error) { - return getEventClient(cacheKey.Context(), cacheKey.ChannelConfig()) + return getEventClient(cacheKey.Context(), cacheKey.ChannelConfig(), opts...) }, ), nil }, @@ -188,16 +189,15 @@ func (f *InfraProvider) CreateOrdererFromConfig(cfg *core.OrdererConfig) (fab.Or return newOrderer, nil } -func getEventClient(ctx context.Client, chConfig fab.ChannelCfg) (fab.EventClient, error) { +func getEventClient(ctx context.Client, chConfig fab.ChannelCfg, opts ...options.Opt) (fab.EventClient, error) { // TODO: This logic should be based on the channel capabilities. For now, // look at the EventServiceType specified in the config file. switch ctx.Config().EventServiceType() { case core.DeliverEventServiceType: - logger.Debugf("Using deliver events") - return deliverclient.New(ctx, chConfig) + return deliverclient.New(ctx, chConfig, opts...) case core.EventHubEventServiceType: logger.Debugf("Using event hub events") - return eventhubclient.New(ctx, chConfig, eventhubclient.WithBlockEvents()) + return eventhubclient.New(ctx, chConfig, opts...) default: return nil, errors.Errorf("unsupported event service type: %d", ctx.Config().EventServiceType()) }