Skip to content
Snippets Groups Projects
nucleus-core.go 1.58 KiB
Newer Older
  • Learn to ignore specific revisions
  • package nucleus
    
    import (
    	"context"
    	_ "github.com/mattn/go-sqlite3"
    	"google.golang.org/grpc"
    	"log"
    	"net"
    	"time"
    )
    
    // TODO XXX This has to be moved to some configuration file
    const (
    	cli_control_port = "localhost:55055"
    )
    
    // server is used to implement helloworld.GreeterServer.
    type server struct {
    	pb.UnimplementedGreeterServer
    }
    
    // SayHello implements helloworld.GreeterServer
    func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
    	log.Printf("Received: %v", in.GetName())
    	return &pb.HelloReply{Message: "Hello " + in.GetName()}, nil
    }
    
    func getCLIGoing() {
    	log.Println("Starting: GetCLIGoing")
    	// Boot-up the control interface for the cli
    	cliControlListener, err := net.Listen("tcp", cli_control_port)
    	if err != nil {
    		log.Fatalf("failed to listen: %v", err)
    	}
    
    	cliControlServer := grpc.NewServer()
    
    	pb.RegisterGreeterServer(cliControlServer, &server{})
    	if err := cliControlServer.Serve(cliControlListener); err != nil {
    		log.Fatalf("failed to serve: %v", err)
    	}
    	log.Println("Started: GetCLIGoing")
    }
    
    /*
     * This function is used to start the core of the controller and any auxiliary services.
     */
    
    // Next-up: backend database.
    
    func StartUp() {
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	log.Println("This is the network superintendent...")
    
    	log.Println("Starting my ducks")
    
    	// Start the GRCP CLI
    
    	go getCLIGoing()
    	log.Println("and ready for take off")
    
    }
    
    /*
     * nucleus.Run() is the "main loop" of the controller
     */
    
    func Run() {
    	isRunning := true
    
    
    	for isRunning {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		time.Sleep(10 * time.Second)
    
    		isRunning = false
    	}
    
    	log.Println("Good bye....!")
    }