// Copyright 2023 ROC. All rights reserved. // Use of this source code is governed by a MIT style // license that can be found in the LICENSE file. package service import ( "context" "net/http" "github.com/bufbuild/connect-go" hx "github.com/rocboss/paopao-ce/pkg/http" ) var ( _ server = (*connectServer)(nil) ) // connectServer wraper for connect type connectServer struct { *baseServer isTLS bool certFile string keyFile string handlerOpts []connect.HandlerOption server *http.Server mux connectMux } type connectMux interface { http.Handler Handle(string, http.Handler) } func (s *connectServer) start() error { s.server.Handler = s.mux if s.isTLS { return s.server.ListenAndServeTLS(s.certFile, s.keyFile) } else { return s.server.ListenAndServe() } } func (s *connectServer) stop() error { return s.server.Shutdown(context.Background()) } func (s *connectServer) register(path string, handler http.Handler) { s.mux.Handle(path, handler) } func defaultConnectServer(addr string) (s *connectServer) { s = &connectServer{ baseServer: newBaseServe(), server: &http.Server{ Addr: addr, }, mux: &http.ServeMux{}, } // TODO: custom value from config var useConnectMux bool if useConnectMux { s.mux = hx.NewConnectMux() } return }