// NewPeerWithHandler returns a Peer which uses the supplied handler factory function for creating new handlers on new Chat service invocations. func NewPeerWithHandler(handlerFact func(MessageHandlerCoordinator, ChatStream, bool, MessageHandler) (MessageHandler, error)) (*PeerImpl, error) { peer := new(PeerImpl) if handlerFact == nil { return nil, errors.New("Cannot supply nil handler factory") } peer.handlerFactory = handlerFact peer.handlerMap = &handlerMap{m: make(map[string]MessageHandler)} // Install security object for peer if viper.GetBool("security.enabled") { enrollID := viper.GetString("security.enrollID") enrollSecret := viper.GetString("security.enrollSecret") var err error if viper.GetBool("peer.validator.enabled") { peerLogger.Debug("Registering validator with enroll ID: %s", enrollID) if err = crypto.RegisterValidator(enrollID, nil, enrollID, enrollSecret); nil != err { return nil, err } peerLogger.Debug("Initializing validator with enroll ID: %s", enrollID) peer.secHelper, err = crypto.InitValidator(enrollID, nil) if nil != err { return nil, err } } else { peerLogger.Debug("Registering non-validator with enroll ID: %s", enrollID) if err = crypto.RegisterPeer(enrollID, nil, enrollID, enrollSecret); nil != err { return nil, err } peerLogger.Debug("Initializing non-validator with enroll ID: %s", enrollID) peer.secHelper, err = crypto.InitPeer(enrollID, nil) if nil != err { return nil, err } } } ledgerPtr, err := ledger.GetLedger() if err != nil { return nil, fmt.Errorf("Error constructing NewPeerWithHandler: %s", err) } peer.ledgerWrapper = &ledgerWrapper{ledger: ledgerPtr} go peer.chatWithPeer(viper.GetString("peer.discovery.rootnode")) return peer, nil }
func initVP() { var opts []grpc.ServerOption if viper.GetBool("peer.tls.enabled") { creds, err := credentials.NewServerTLSFromFile(viper.GetString("peer.tls.cert.file"), viper.GetString("peer.tls.key.file")) if err != nil { grpclog.Fatalf("Failed to generate credentials %v", err) } opts = []grpc.ServerOption{grpc.Creds(creds)} } grpcServer := grpc.NewServer(opts...) //lis, err := net.Listen("tcp", viper.GetString("peer.address")) //use a different address than what we usually use for "peer" //we override the peerAddress set in chaincode_support.go peerAddress := "0.0.0.0:40404" var err error lis, err = net.Listen("tcp", peerAddress) if err != nil { return } getPeerEndpoint := func() (*pb.PeerEndpoint, error) { return &pb.PeerEndpoint{ID: &pb.PeerID{Name: "testpeer"}, Address: peerAddress}, nil } ccStartupTimeout := time.Duration(chaincodeStartupTimeoutDefault) * time.Millisecond userRunsCC := true // Install security object for peer var secHelper crypto.Peer if viper.GetBool("security.enabled") { enrollID := viper.GetString("security.enrollID") enrollSecret := viper.GetString("security.enrollSecret") var err error if viper.GetBool("peer.validator.enabled") { testLogger.Debug("Registering validator with enroll ID: %s", enrollID) if err = crypto.RegisterValidator(enrollID, nil, enrollID, enrollSecret); nil != err { panic(err) } testLogger.Debug("Initializing validator with enroll ID: %s", enrollID) secHelper, err = crypto.InitValidator(enrollID, nil) if nil != err { panic(err) } } else { testLogger.Debug("Registering non-validator with enroll ID: %s", enrollID) if err = crypto.RegisterPeer(enrollID, nil, enrollID, enrollSecret); nil != err { panic(err) } testLogger.Debug("Initializing non-validator with enroll ID: %s", enrollID) secHelper, err = crypto.InitPeer(enrollID, nil) if nil != err { panic(err) } } } pb.RegisterChaincodeSupportServer(grpcServer, chaincode.NewChaincodeSupport(chaincode.DefaultChain, getPeerEndpoint, userRunsCC, ccStartupTimeout, secHelper)) grpcServer.Serve(lis) }