blob: aed7b5df5ac1451e0ea31537753869d291a54156 [file] [log] [blame]
// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package publishserver
import (
"fmt"
"net"
"go.chromium.org/chromiumos/config/go/longrunning"
"go.chromium.org/chromiumos/config/go/test/api"
"go.chromium.org/luci/common/errors"
"google.golang.org/grpc"
"chromiumos/lro"
)
// StartServer starts publish server on requested port
func (s *PublishService) StartServer(port int) error {
l, err := net.Listen("tcp", fmt.Sprintf(":%d", port))
if err != nil {
return errors.Annotate(err, "Start publish server: failed to create listener at %d", port).Err()
}
s.manager = lro.New()
defer s.manager.Close()
server := grpc.NewServer()
api.RegisterPublishServiceServer(server, s)
longrunning.RegisterOperationsServer(server, s.manager)
s.logger.Println("Publish server is listening to request at ", l.Addr().String())
return server.Serve(l)
}