func WithConfig(c engine.Config) (s *Server) {
	s = &Server{
		Server: new(fasthttp.Server),
		config: c,
		pool: &pool{
			request: sync.Pool{
				New: func() interface{} {
					return &Request{logger: s.logger}
				},
			},
			response: sync.Pool{
				New: func() interface{} {
					return &Response{logger: s.logger}
				},
			},
			requestHeader: sync.Pool{
				New: func() interface{} {
					return &RequestHeader{}
				},
			},
			responseHeader: sync.Pool{
				New: func() interface{} {
					return &ResponseHeader{}
				},
			},
			url: sync.Pool{
				New: func() interface{} {
					return &URL{}
				},
			},
		},
		handler: engine.HandlerFunc(func(req engine.Request, res engine.Response) {
			panic("vodka: handler not set, use `Server#SetHandler()` to set it.")
		}),
		logger: glog.New("vodka"),
	}
	s.ReadTimeout = c.ReadTimeout
	s.WriteTimeout = c.WriteTimeout
	s.Handler = s.ServeHTTP
	return
}
WithConfig returns `Server` with provided config.
package fasthttp
import (
	"sync"
	"github.com/insionng/vodka"
	"github.com/insionng/vodka/engine"
	"github.com/insionng/vodka/log"
	glog "github.com/insionng/vodka/libraries/gommon/log"
	"github.com/valyala/fasthttp"
)
type (
	Server struct {
		*fasthttp.Server
		config  engine.Config
		handler engine.Handler
		logger  log.Logger
		pool    *pool
	}
	pool struct {
		request        sync.Pool
		response       sync.Pool
		requestHeader  sync.Pool
		responseHeader sync.Pool
		url            sync.Pool
	}
)
func New(addr string) *Server {
	c := engine.Config{Address: addr}
	return WithConfig(c)
}
func WithTLS(addr, certFile, keyFile string) *Server {
	c := engine.Config{
		Address:     addr,
		TLSCertFile: certFile,
		TLSKeyFile:  keyFile,
	}
	return WithConfig(c)
}