Skip to content

Commit

Permalink
FAB-426 Implemented simple non-valdiating engine
Browse files Browse the repository at this point in the history
Allows the network to come up and form a simple p2p system.
This is an interim step to refactoring for the v1 network which
will allow for the existing behave test to be executed after
modification in subsequent changeset.

Change-Id: Ibd0403b32f1f4366fae9d84b1db562a1e4a9a86c
Signed-off-by: jeffgarratt <garratt.jeff@gmail.com>
  • Loading branch information
jeffgarratt committed Oct 25, 2016
1 parent a7f445f commit c5ec1b8
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 9 deletions.
71 changes: 71 additions & 0 deletions core/peernext/engine.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
Copyright IBM Corp. 2016 All Rights Reserved.
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.
*/

package peer

import (
"sync"

pb "github.com/hyperledger/fabric/protos"
)

// EngineImpl implements a struct to manage Peer default engine functionality
type EngineImpl struct {
//consenter consensus.Consenter
peerEndpoint *pb.PeerEndpoint
}

// GetHandlerFactory returns new NewConsensusHandler
func (eng *EngineImpl) GetHandlerFactory() HandlerFactory {
return eng.GetNewPeerHandler
}

//GetNewPeerHandler handlerFactory function for simple peer discovery
func (eng *EngineImpl) GetNewPeerHandler(coord MessageHandlerCoordinator, chatStream ChatStream, initiatedStream bool, next MessageHandler) (MessageHandler, error) {
return NewPeerHandler(coord, chatStream, initiatedStream, next)
}

// ProcessTransactionMsg processes a Message in context of a Transaction
func (eng *EngineImpl) ProcessTransactionMsg(msg *pb.Message, tx *pb.Transaction) (response *pb.Response) {
return nil
}

var engineOnce sync.Once

var engine *EngineImpl

func getEngineImpl() *EngineImpl {
return engine
}

// GetEngine returns initialized Engine
func GetEngine(coord MessageHandlerCoordinator) (Engine, error) {
var err error
engineOnce.Do(func() {
engine = new(EngineImpl)
engine.peerEndpoint, err = coord.GetPeerEndpoint()

//go func() {
// peerLogger.Debug("Starting up message thread for consenter")
//
// // The channel never closes, so this should never break
// for msg := range engine.consensusFan.GetOutChannel() {
// engine.consenter.RecvMsg(msg.Msg, msg.Sender)
// }
//}()
})
return engine, err
}
17 changes: 9 additions & 8 deletions core/peernext/peer.go
Original file line number Diff line number Diff line change
Expand Up @@ -613,14 +613,15 @@ func (p *Impl) newHelloMessage() (*pb.HelloMessage, error) {
if err != nil {
return nil, fmt.Errorf("Error creating hello message: %s", err)
}
p.ledgerWrapper.RLock()
defer p.ledgerWrapper.RUnlock()
//size := p.ledgerWrapper.ledger.GetBlockchainSize()
blockChainInfo, err := p.ledgerWrapper.ledger.GetBlockchainInfo()
if err != nil {
return nil, fmt.Errorf("Error creating hello message, error getting block chain info: %s", err)
}
return &pb.HelloMessage{PeerEndpoint: endpoint, BlockchainInfo: blockChainInfo}, nil
//p.ledgerWrapper.RLock()
//defer p.ledgerWrapper.RUnlock()
////size := p.ledgerWrapper.ledger.GetBlockchainSize()
//blockChainInfo, err := p.ledgerWrapper.ledger.GetBlockchainInfo()
//if err != nil {
// return nil, fmt.Errorf("Error creating hello message, error getting block chain info: %s", err)
//}
//return &pb.HelloMessage{PeerEndpoint: endpoint, BlockchainInfo: blockChainInfo}, nil
return &pb.HelloMessage{PeerEndpoint: endpoint}, nil
}

// GetBlockByNumber return a block by block number
Expand Down
2 changes: 1 addition & 1 deletion peer/node/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ func serve(args []string) error {
logger.Debugf("Running as validating peer - installing consensus %s",
viper.GetString("peer.validator.consensus"))

peerServer, err = peer.NewPeerWithEngine(secHelperFunc, nil) //PDMP- remove need for consensus engine
peerServer, err = peer.NewPeerWithEngine(secHelperFunc, peer.GetEngine)
} else {
logger.Debug("Running as non-validating peer")
peerServer, err = peer.NewPeerWithHandler(secHelperFunc, peer.NewPeerHandler)
Expand Down

0 comments on commit c5ec1b8

Please sign in to comment.