MCPcopy
hub / github.com/TarsCloud/TarsGo / Run

Method Run

tars/application.go:347–438  ·  view source on GitHub ↗

Run the application

(opts ...Option)

Source from the content-addressed store, hash-verified

345
346// Run the application
347func (a *application) Run(opts ...Option) {
348 defer rogger.FlushLogger()
349 a.isShutdowning = 0
350 a.init()
351 <-statInited
352
353 for _, opt := range opts {
354 opt(a.opt)
355 }
356
357 for _, env := range os.Environ() {
358 if strings.HasPrefix(env, grace.InheritFdPrefix) {
359 TLOG.Infof("env %s", env)
360 }
361 }
362
363 // add adminF
364 if _, ok := a.tarsConfig["AdminObj"]; ok {
365 adf := new(adminf.AdminF)
366 ad := newAdmin(a)
367 AddServant(adf, ad, "AdminObj")
368 }
369
370 lisDone := &sync.WaitGroup{}
371 for _, obj := range a.objRunList {
372 if s, ok := a.httpSvrs[obj]; ok {
373 lisDone.Add(1)
374 go func(obj string) {
375 addr := s.Addr
376 TLOG.Infof("%s http server start on %s", obj, s.Addr)
377 if addr == "" {
378 lisDone.Done()
379 a.teerDown(fmt.Errorf("empty addr for %s", obj))
380 return
381 }
382 ln, err := grace.CreateListener("tcp", addr)
383 if err != nil {
384 lisDone.Done()
385 a.teerDown(fmt.Errorf("start http server for %s failed: %v", obj, err))
386 return
387 }
388
389 lisDone.Done()
390 if s.TLSConfig != nil {
391 err = s.ServeTLS(ln, "", "")
392 } else {
393 err = s.Serve(ln)
394 }
395 if err != nil {
396 if err == http.ErrServerClosed {
397 TLOG.Infof("%s http server stop: %v", obj, err)
398 } else {
399 a.teerDown(fmt.Errorf("%s server stop: %v", obj, err))
400 }
401 }
402 }(obj)
403 continue
404 }

Callers 1

RunFunction · 0.45

Calls 15

initMethod · 0.95
teerDownMethod · 0.95
mainLoopMethod · 0.95
FlushLoggerFunction · 0.92
CreateListenerFunction · 0.92
SignalUSR2Function · 0.92
newAdminFunction · 0.85
AddServantFunction · 0.85
ReportNotifyInfoFunction · 0.85
DoneMethod · 0.80
ServeMethod · 0.80
AddMethod · 0.65

Tested by

no test coverage detected