MCPcopy
hub / github.com/fvbock/endless / NewServer

Function NewServer

endless.go:89–144  ·  view source on GitHub ↗

* NewServer returns an intialized endlessServer Object. Calling Serve on it will actually "start" the server. */

(addr string, handler http.Handler)

Source from the content-addressed store, hash-verified

87actually "start" the server.
88*/
89func NewServer(addr string, handler http.Handler) (srv *endlessServer) {
90 runningServerReg.Lock()
91 defer runningServerReg.Unlock()
92
93 socketOrder = os.Getenv("ENDLESS_SOCKET_ORDER")
94 isChild = os.Getenv("ENDLESS_CONTINUE") != ""
95
96 if len(socketOrder) > 0 {
97 for i, addr := range strings.Split(socketOrder, ",") {
98 socketPtrOffsetMap[addr] = uint(i)
99 }
100 } else {
101 socketPtrOffsetMap[addr] = uint(len(runningServersOrder))
102 }
103
104 srv = &endlessServer{
105 wg: sync.WaitGroup{},
106 sigChan: make(chan os.Signal),
107 isChild: isChild,
108 SignalHooks: map[int]map[os.Signal][]func(){
109 PRE_SIGNAL: map[os.Signal][]func(){
110 syscall.SIGHUP: []func(){},
111 syscall.SIGUSR1: []func(){},
112 syscall.SIGUSR2: []func(){},
113 syscall.SIGINT: []func(){},
114 syscall.SIGTERM: []func(){},
115 syscall.SIGTSTP: []func(){},
116 },
117 POST_SIGNAL: map[os.Signal][]func(){
118 syscall.SIGHUP: []func(){},
119 syscall.SIGUSR1: []func(){},
120 syscall.SIGUSR2: []func(){},
121 syscall.SIGINT: []func(){},
122 syscall.SIGTERM: []func(){},
123 syscall.SIGTSTP: []func(){},
124 },
125 },
126 state: STATE_INIT,
127 lock: &sync.RWMutex{},
128 }
129
130 srv.Server.Addr = addr
131 srv.Server.ReadTimeout = DefaultReadTimeOut
132 srv.Server.WriteTimeout = DefaultWriteTimeOut
133 srv.Server.MaxHeaderBytes = DefaultMaxHeaderBytes
134 srv.Server.Handler = handler
135
136 srv.BeforeBegin = func(addr string) {
137 log.Println(syscall.Getpid(), addr)
138 }
139
140 runningServersOrder = append(runningServersOrder, addr)
141 runningServers[addr] = srv
142
143 return
144}
145
146/*

Callers 2

ListenAndServeFunction · 0.85
ListenAndServeTLSFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected