January 2020
Intermediate to advanced
640 pages
16h 56m
English
While the constructor returns a new and configured Master instance, it does not automatically start the master's gRPC server. Instead, this task is left to the end user, who must manually invoke the master's Start method:
func (m *Master) Start() error { var err error if m.srvListener, err = net.Listen("tcp", m.cfg.ListenAddress); err != nil { return xerrors.Errorf("cannot start server: %w", err) } gSrv := grpc.NewServer() proto.RegisterJobQueueServer(gSrv, &masterRPCHandler{ workerPool: m.workerPool, logger: m.cfg.Logger, }) m.cfg.Logger.WithField("addr", m.srvListener.Addr().String()).Info("listening for worker connections") go func(l net.Listener) { _ = gSrv.Serve(l) }(m.srvListener) return nil }
As ...