Skip to content
Snippets Groups Projects
consensus.go 1.56 KiB
Newer Older
// Copyright 2017 Monax Industries Limited
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
Silas Davis's avatar
Silas Davis committed
	"fmt"
Silas Davis's avatar
Silas Davis committed
	config "github.com/eris-ltd/eris-db/config"
	tendermint "github.com/eris-ltd/eris-db/consensus/tendermint"
	definitions "github.com/eris-ltd/eris-db/definitions"
func LoadConsensusEngineInPipe(moduleConfig *config.ModuleConfig,
Silas Davis's avatar
Silas Davis committed
	pipe definitions.Pipe) error {
	switch moduleConfig.Name {
	case "tendermint":
Silas Davis's avatar
Silas Davis committed
		tmint, err := tendermint.NewTendermint(moduleConfig, pipe.GetApplication(),
Silas Davis's avatar
Silas Davis committed
			pipe.Logger().With())
Silas Davis's avatar
Silas Davis committed
		if err != nil {
			return fmt.Errorf("Failed to load Tendermint node: %v", err)
		}
Silas Davis's avatar
Silas Davis committed
		err = pipe.SetConsensusEngine(tmint)
		if err != nil {
			return fmt.Errorf("Failed to load Tendermint in pipe as "+
				"ConsensusEngine: %v", err)
		}

		// For Tendermint we have a coupled Blockchain and ConsensusEngine
		// implementation, so load it at the same time as ConsensusEngine
Silas Davis's avatar
Silas Davis committed
		err = pipe.SetBlockchain(tmint)
		if err != nil {
			return fmt.Errorf("Failed to load Tendermint in pipe as "+
				"Blockchain: %v", err)
Silas Davis's avatar
Silas Davis committed
		}
	}
	return nil