/
avpavlow
/
core-platform
Обзор
Документация
Войти
/
avpavlow
/
core-platform
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
pkg/httpserver/server.go
66 строк
1 KB
aleksey
add: Добавить сервер httpserver; feat: Добавить функционал в app.go
18 мар 2026, 09:02
18 мар 2026, 09:02
28e5881
Код
Авторство
О чём код?
package httpserver import ( "context" "net/http" "time" ) const ( _defaultReadTimeout = 5 * time.Second _defaultWriteTimeout = 5 * time.Second _defaultAddr = ":8080" _defaultShutdownTimeout = 3 * time.Second ) // Server - обертка над стандартным http.Server type Server struct { server *http.Server notify chan error shutdownTimeout time.Duration } // New создает новый экземпляр сервера func New(handler http.Handler, opts ...Option) *Server { httpServer := &http.Server{ Handler: handler, ReadTimeout: _defaultReadTimeout, WriteTimeout: _defaultWriteTimeout, Addr: _defaultAddr, } s := &Server{ server: httpServer, notify: make(chan error, 1), shutdownTimeout: _defaultShutdownTimeout, } // Применяем опции (порт и т.д.) for _, opt := range opts { opt(s) } s.start() return s } func (s *Server) start() { go func() { s.notify <- s.server.ListenAndServe() close(s.notify) }() } // Notify возвращает канал для отслеживания ошибок (например, порт занят) func (s *Server) Notify() <-chan error { return s.notify } // Shutdown плавно останавливает сервер func (s *Server) Shutdown() error { ctx, cancel := context.WithTimeout(context.Background(), s.shutdownTimeout) defer cancel() return s.server.Shutdown(ctx) }