From 96b70e6992620e17a1a64663d87d565e09dc1308 Mon Sep 17 00:00:00 2001 From: Meng-Ying Yang Date: Wed, 2 Jan 2019 16:32:43 +0800 Subject: Indexer plugin extension and custom flags support (#117) * indexer: ReadOnlyBlockchain returns underlying engine * indexer: plugin configs support custom flags --- cmd/gdex/main.go | 1 + cmd/gdex/usage.go | 1 + cmd/utils/flags.go | 6 ++++++ indexer/blockchain.go | 2 ++ indexer/config.go | 3 +++ 5 files changed, 13 insertions(+) diff --git a/cmd/gdex/main.go b/cmd/gdex/main.go index c054e3ad5..8e08e2d77 100644 --- a/cmd/gdex/main.go +++ b/cmd/gdex/main.go @@ -139,6 +139,7 @@ var ( utils.EVMInterpreterFlag, utils.IndexerEnableFlag, utils.IndexerPluginFlag, + utils.IndexerPluginFlagsFlag, configFileFlag, } diff --git a/cmd/gdex/usage.go b/cmd/gdex/usage.go index 880e447f3..910b6498b 100644 --- a/cmd/gdex/usage.go +++ b/cmd/gdex/usage.go @@ -244,6 +244,7 @@ var AppHelpFlagGroups = []flagGroup{ Flags: []cli.Flag{ utils.IndexerEnableFlag, utils.IndexerPluginFlag, + utils.IndexerPluginFlagsFlag, }, }, { diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 96a642850..28ac6b9c6 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -659,6 +659,11 @@ var ( Usage: "External indexer plugin shared object path", Value: "", } + IndexerPluginFlagsFlag = cli.StringFlag{ + Name: "indexer.plugin-flags", + Usage: "External indexer plugin's flags if needed", + Value: "", + } ) // MakeDataDir retrieves the currently requested data directory, terminating @@ -1305,6 +1310,7 @@ func setIndexerConfig(ctx *cli.Context, cfg *dex.Config) { } cfg.Indexer.Plugin = ctx.GlobalString(IndexerPluginFlag.Name) + cfg.Indexer.PluginFlags = ctx.GlobalString(IndexerPluginFlagsFlag.Name) } // SetDashboardConfig applies dashboard related command line flags to the config. diff --git a/indexer/blockchain.go b/indexer/blockchain.go index a762ef67d..421535184 100644 --- a/indexer/blockchain.go +++ b/indexer/blockchain.go @@ -7,6 +7,7 @@ import ( coreTypes "github.com/dexon-foundation/dexon-consensus/core/types" "github.com/dexon-foundation/dexon/common" + "github.com/dexon-foundation/dexon/consensus" "github.com/dexon-foundation/dexon/core" "github.com/dexon-foundation/dexon/core/state" "github.com/dexon-foundation/dexon/core/types" @@ -24,6 +25,7 @@ type ReadOnlyBlockChain interface { CurrentBlock() *types.Block CurrentFastBlock() *types.Block CurrentHeader() *types.Header + Engine() consensus.Engine GasLimit() uint64 Genesis() *types.Block GetAncestor(common.Hash, uint64, uint64, *uint64) (common.Hash, uint64) diff --git a/indexer/config.go b/indexer/config.go index 3b626272a..396a23b66 100644 --- a/indexer/config.go +++ b/indexer/config.go @@ -11,6 +11,9 @@ type Config struct { // Plugin path for building components. Plugin string + + // PluginFlags for construction if needed. + PluginFlags string } // NewIndexerFromConfig initialize exporter according to given config. -- cgit v1.2.3