From 63d4e75456be7d8b1e6fc758b9f63296b75a4b4a Mon Sep 17 00:00:00 2001 From: Benjamin Bollen <ben@erisindustries.com> Date: Wed, 29 Jun 2016 19:59:59 +0200 Subject: [PATCH] connect GatewayTendermint into serve --- cmd/serve.go | 4 +++ core/core.go | 55 ++++++++++++--------------------------- definitions/pipe.go | 2 ++ manager/eris-mint/pipe.go | 9 +++++-- 4 files changed, 29 insertions(+), 41 deletions(-) diff --git a/cmd/serve.go b/cmd/serve.go index 0f560031..b355d884 100644 --- a/cmd/serve.go +++ b/cmd/serve.go @@ -145,6 +145,10 @@ func Serve(cmd *cobra.Command, args []string) { log.Fatalf("Failed to start servers: %s.", err) os.Exit(1) } + _, err = newCore.NewGatewayTendermint(serverConfig) + if err != nil { + log.Fatalf("Failed to start Tendermint gateway") + } <- serverProcess.StopEventChannel() } diff --git a/core/core.go b/core/core.go index 97d251ea..ca69aadb 100644 --- a/core/core.go +++ b/core/core.go @@ -31,9 +31,8 @@ import ( manager "github.com/eris-ltd/eris-db/manager" // rpc_v0 is carried over from Eris-DBv0.11 and before on port 1337 rpc_v0 "github.com/eris-ltd/eris-db/rpc/v0" - rpc_tendermint "github.com/eris-ltd/eris-db/rpc/tendermint/core" // rpc_tendermint is carried over from Eris-DBv0.11 and before on port 46657 - // rpc_tendermint "github.com/eris-ltd/eris-db/rpc/tendermint" + rpc_tendermint "github.com/eris-ltd/eris-db/rpc/tendermint/core" server "github.com/eris-ltd/eris-db/server" ) @@ -60,11 +59,22 @@ func NewCore(chainId string, consensusConfig *config.ModuleConfig, log.Debug("Loaded pipe with application manager") // pass the consensus engine into the pipe consensus.LoadConsensusEngineInPipe(consensusConfig, pipe) - + tendermintPipe, err := pipe.GetTendermintPipe() + if err != nil { + log.Warn(fmt.Sprintf("Tendermint gateway not supported by %s", + managerConfig.Version)) + return &Core{ + chainId: chainId, + evsw: evsw, + pipe: pipe, + tendermintPipe: nil, + }, nil + } return &Core{ - chainId: chainId, - evsw: evsw, - pipe: pipe, + chainId: chainId, + evsw: evsw, + pipe: pipe, + tendermintPipe: tendermintPipe, }, nil } @@ -109,36 +119,3 @@ func (core *Core) NewGatewayTendermint(config *server.ServerConfig) ( return rpc_tendermint.NewTendermintWebsocketServer(config, core.tendermintPipe, core.evsw) } - -// func (core *Core) StartRPC(config server.ServerConfig) ([]net.Listener, error) { -// rpc_tendermint.SetConfig(config) -// -// rpc_tendermint.SetErisMint(core.pipe.GetApplication()) -// rpc_tendermint.SetBlockStore(n.BlockStore()) -// rpc_tendermint.SetConsensusState(n.ConsensusState()) -// rpc_tendermint.SetConsensusReactor(n.ConsensusReactor()) -// rpc_tendermint.SetMempoolReactor(n.MempoolReactor()) -// rpc_tendermint.SetSwitch(n.Switch()) -// rpc_tendermint.SetPrivValidator(n.PrivValidator()) -// // TODO: programming -// //rpc_tendermint.SetGenDoc(LoadGenDoc(config.GetString("genesis_file"))) -// -// // TODO: also programming -// //listenAddrs := strings.Split(config.GetString("rpc_laddr"), ",") -// listenAddrs := strings.Split("127.0.0.1", ",") -// -// // we may expose the rpc over both a unix and tcp socket -// listeners := make([]net.Listener, len(listenAddrs)) -// for i, listenAddr := range listenAddrs { -// mux := http.NewServeMux() -// wm := rpcserver.NewWebsocketManager(rpc_tendermint.Routes, n.EventSwitch()) -// mux.HandleFunc("/websocket", wm.WebsocketHandler) -// rpcserver.RegisterRPCFuncs(mux, rpc_tendermint.Routes) -// listener, err := rpcserver.StartHTTPServer(listenAddr, mux) -// if err != nil { -// return nil, err -// } -// listeners[i] = listener -// } -// return listeners, nil -// } diff --git a/definitions/pipe.go b/definitions/pipe.go index 070c3d22..f3c6978d 100644 --- a/definitions/pipe.go +++ b/definitions/pipe.go @@ -45,6 +45,8 @@ type Pipe interface { // NOTE: [ben] added to Pipe interface on 0.12 refactor GetApplication() manager_types.Application SetConsensusEngine(consensus ConsensusEngine) error + // Support for Tendermint RPC + GetTendermintPipe() (TendermintPipe, error) } type Accounts interface { diff --git a/manager/eris-mint/pipe.go b/manager/eris-mint/pipe.go index c7b68461..bf322ee7 100644 --- a/manager/eris-mint/pipe.go +++ b/manager/eris-mint/pipe.go @@ -62,8 +62,8 @@ type ErisMintPipe struct { var _ definitions.Pipe = (*ErisMintPipe)(nil) // NOTE [ben] Compiler check to ensure ErisMintPipe successfully implements -// eris-db/definitions.TendermintPipe -// var _ definitions.TendermintPipe = (*ErisMintPipe)(nil) +// eris-db/definitions.erisTendermintPipe +var _ definitions.TendermintPipe = (*ErisMintPipe)(nil) func NewErisMintPipe(moduleConfig *config.ModuleConfig, eventSwitch *tendermint_events.EventSwitch) (*ErisMintPipe, error) { @@ -208,6 +208,11 @@ func (pipe *ErisMintPipe) SetConsensusEngine( return nil } +func (pipe *ErisMintPipe) GetTendermintPipe() (definitions.TendermintPipe, + error) { + return definitions.TendermintPipe(pipe), nil +} + //------------------------------------------------------------------------------ // Implement definitions.TendermintPipe for ErisMintPipe -- GitLab