()
| 206 | } |
| 207 | |
| 208 | func (s *LivekitServer) Start() error { |
| 209 | if s.running.Load() { |
| 210 | return errors.New("already running") |
| 211 | } |
| 212 | s.doneChan = make(chan struct{}) |
| 213 | |
| 214 | if err := s.router.RegisterNode(); err != nil { |
| 215 | return err |
| 216 | } |
| 217 | defer func() { |
| 218 | if err := s.router.UnregisterNode(); err != nil { |
| 219 | logger.Errorw("could not unregister node", err) |
| 220 | } |
| 221 | }() |
| 222 | |
| 223 | if err := s.router.Start(); err != nil { |
| 224 | return err |
| 225 | } |
| 226 | |
| 227 | if err := s.ioService.Start(); err != nil { |
| 228 | return err |
| 229 | } |
| 230 | |
| 231 | addresses := s.config.BindAddresses |
| 232 | if addresses == nil { |
| 233 | addresses = []string{""} |
| 234 | } |
| 235 | |
| 236 | // ensure we could listen |
| 237 | listeners := make([]net.Listener, 0) |
| 238 | promListeners := make([]net.Listener, 0) |
| 239 | debugListeners := make([]net.Listener, 0) |
| 240 | for _, addr := range addresses { |
| 241 | ln, err := net.Listen("tcp", net.JoinHostPort(addr, strconv.Itoa(int(s.config.Port)))) |
| 242 | if err != nil { |
| 243 | return err |
| 244 | } |
| 245 | listeners = append(listeners, ln) |
| 246 | |
| 247 | if s.promServer != nil { |
| 248 | ln, err = net.Listen("tcp", net.JoinHostPort(addr, strconv.Itoa(int(s.config.Prometheus.Port)))) |
| 249 | if err != nil { |
| 250 | return err |
| 251 | } |
| 252 | promListeners = append(promListeners, ln) |
| 253 | } |
| 254 | |
| 255 | if s.debugServer != nil { |
| 256 | ln, err = net.Listen("tcp", net.JoinHostPort(addr, strconv.Itoa(int(s.config.DebugHandler.Port)))) |
| 257 | if err != nil { |
| 258 | return err |
| 259 | } |
| 260 | debugListeners = append(debugListeners, ln) |
| 261 | } |
| 262 | } |
| 263 | |
| 264 | values := []any{ |
| 265 | "portHttp", s.config.Port, |
nothing calls this directly
no test coverage detected