Documentation ¶
Overview ¶
Package server implements a network server.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Configuration ¶
type Configuration struct { // Server listening address. ListenAddress string `yaml:"listenAddress" validate:"nonzero"` // Retry mechanism configuration. Retry retry.Configuration `yaml:"retry"` // Whether keep alives are enabled on connections. KeepAliveEnabled *bool `yaml:"keepAliveEnabled"` // KeepAlive period. KeepAlivePeriod *time.Duration `yaml:"keepAlivePeriod"` }
Configuration configs a server.
func (Configuration) NewOptions ¶
func (c Configuration) NewOptions(iOpts instrument.Options) Options
NewOptions creates server options.
func (Configuration) NewServer ¶
func (c Configuration) NewServer(handler Handler, iOpts instrument.Options) Server
NewServer creates a new server.
type Handler ¶
type Handler interface { // Handle handles the data received on the connection, this function // should be blocking until the connection is closed or received error. Handle(conn net.Conn) // Close closes the handler. Close() }
Handler can handle the data received on connection. It's used in Server once a connection was established.
type Options ¶
type Options interface { // SetInstrumentOptions sets the instrument options SetInstrumentOptions(value instrument.Options) Options // InstrumentOptions returns the instrument options InstrumentOptions() instrument.Options // SetRetryOptions sets the retry options SetRetryOptions(value retry.Options) Options // RetryOptions returns the retry options RetryOptions() retry.Options // SetTCPConnectionKeepAlive sets the keep alive state for tcp connections. SetTCPConnectionKeepAlive(value bool) Options // TCPConnectionKeepAlive returns the keep alive state for tcp connections. TCPConnectionKeepAlive() bool // SetTCPConnectionKeepAlivePeriod sets the keep alive period for tcp connections. // NB(xichen): on Linux this modifies both the idle time (i.e,. the time when the // last packet is sent from the client and when the first keepAlive probe is sent) // as well as the interval between keepAlive probes. SetTCPConnectionKeepAlivePeriod(value time.Duration) Options // TCPConnectionKeepAlivePeriod returns the keep alive period for tcp connections. TCPConnectionKeepAlivePeriod() time.Duration // SetListenerOptions sets the listener options for the server. SetListenerOptions(value xnet.ListenerOptions) Options // ListenerOptions sets the listener options for the server. ListenerOptions() xnet.ListenerOptions }
Options provide a set of server options
type Server ¶
type Server interface { // ListenAndServe forever listens to new incoming connections and // handles data from those connections. ListenAndServe() error // Serve accepts and handles incoming connections on the listener l forever. Serve(l net.Listener) error // Close closes the server. Close() }
Server is a server capable of listening to incoming traffic and closing itself when it's shut down.
Example ¶
package main import ( "log" "net" xserver "github.com/m3db/m3/src/x/server" ) type simpleHandler struct{} func (h *simpleHandler) Handle(conn net.Conn) { conn.Close() } func (h *simpleHandler) Close() {} func main() { var ( address = ":0" handler = &simpleHandler{} opts = xserver.NewOptions() ) s := xserver.NewServer(address, handler, opts) if err := s.ListenAndServe(); err != nil { log.Fatal(err) } // Block indefintely so server can run. select {} }
Output:
Click to show internal directories.
Click to hide internal directories.