Documentation
¶
Index ¶
- Constants
- Variables
- func Debugf(format string, v ...interface{})
- func Errorf(format string, v ...interface{})
- func Fatalf(format string, v ...interface{})
- func Noticef(format string, v ...interface{})
- func PrintAndDie(msg string)
- func PrintServerAndExit()
- func RemoveSelfReference(clusterPort int, routes []*url.URL) ([]*url.URL, error)
- func ResponseHandler(w http.ResponseWriter, r *http.Request, data []byte)
- func RoutesFromStr(routesStr string) []*url.URL
- func Tracef(format string, v ...interface{})
- func Usage()
- type Auth
- type ByCid
- type ByInBytes
- type ByInMsgs
- type ByOutBytes
- type ByOutMsgs
- type ByPending
- type BySubs
- type ClientAuth
- type ConnInfo
- type Connz
- type Info
- type Logger
- type Options
- type Pair
- type RouteInfo
- type Routez
- type Server
- func (s *Server) AcceptLoop()
- func (s *Server) Addr() net.Addr
- func (s *Server) HandleConnz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleRoot(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleRoutez(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleSubsz(w http.ResponseWriter, r *http.Request)
- func (s *Server) HandleVarz(w http.ResponseWriter, r *http.Request)
- func (s *Server) NumClients() int
- func (s *Server) NumRemotes() int
- func (s *Server) NumRoutes() int
- func (s *Server) NumSubscriptions() uint32
- func (s *Server) SetAuthMethod(authMethod Auth)
- func (s *Server) SetLogger(logger Logger, debugFlag, traceFlag bool)
- func (s *Server) Shutdown()
- func (s *Server) Start()
- func (s *Server) StartHTTPMonitoring()
- func (s *Server) StartProfiler()
- func (s *Server) StartRouting()
- type SortOpt
- type Subsz
- type Varz
Constants ¶
const ( // CLIENT is an end user. CLIENT = iota // ROUTER is another router in the cluster. ROUTER )
Type of client
const ( // VERSION is the current version for the server. VERSION = "0.6.6" // DEFAULT_PORT is the deault port for client connections. DEFAULT_PORT = 4222 // RANDOM_PORT is the value for port that, when supplied, will cause the // server to listen on a randomly-chosen available port. The resolved port // is available via the Addr() method. RANDOM_PORT = -1 // DEFAULT_HOST defaults to all interfaces. DEFAULT_HOST = "0.0.0.0" // MAX_CONTROL_LINE_SIZE is the maximum allowed protocol control line size. // 1k should be plenty since payloads sans connect string are separate MAX_CONTROL_LINE_SIZE = 1024 // MAX_PAYLOAD_SIZE is the maximum allowed payload size. Should be using // something different if > 1MB payloads are needed. MAX_PAYLOAD_SIZE = (1024 * 1024) // MAX_PENDING_SIZE is the maximum outbound size (in bytes) per client. MAX_PENDING_SIZE = (10 * 1024 * 1024) // DEFAULT_MAX_CONNECTIONS is the default maximum connections allowed. DEFAULT_MAX_CONNECTIONS = (64 * 1024) // SSL_TIMEOUT is the TLS/SSL wait time. SSL_TIMEOUT = 500 * time.Millisecond // AUTH_TIMEOUT is the authorization wait time. AUTH_TIMEOUT = 2 * SSL_TIMEOUT // DEFAULT_PING_INTERVAL is how often pings are sent to clients and routes. DEFAULT_PING_INTERVAL = 2 * time.Minute // DEFAULT_PING_MAX_OUT is maximum allowed pings outstanding before disconnect. DEFAULT_PING_MAX_OUT = 2 // CRLF string CR_LF = "\r\n" // LEN_CR_LF hold onto the computed size. LEN_CR_LF = len(CR_LF) // DEFAULT_FLUSH_DEADLINE is the write/flush deadlines. DEFAULT_FLUSH_DEADLINE = 2 * time.Second // DEFAULT_HTTP_PORT is the default monitoring port. DEFAULT_HTTP_PORT = 8222 // ACCEPT_MIN_SLEEP is the minimum acceptable sleep times on temporary errors. ACCEPT_MIN_SLEEP = 10 * time.Millisecond // ACCEPT_MAX_SLEEP is the maximum acceptable sleep times on temporary errors ACCEPT_MAX_SLEEP = 1 * time.Second // DEFAULT_ROUTE_CONNECT Route solicitation intervals. DEFAULT_ROUTE_CONNECT = 1 * time.Second // DEFAULT_ROUTE_RECONNECT Route reconnect intervals. DEFAULT_ROUTE_RECONNECT = 1 * time.Second // DEFAULT_ROUTE_DIAL Route dial timeout. DEFAULT_ROUTE_DIAL = 1 * time.Second // PROTO_SNIPPET_SIZE is the default size of proto to print on parse errors. PROTO_SNIPPET_SIZE = 32 // MAX_MSG_ARGS Maximum possible number of arguments from MSG proto. MAX_MSG_ARGS = 4 // MAX_PUB_ARGS Maximum possible number of arguments from PUB proto. MAX_PUB_ARGS = 3 )
const ( OP_START = iota OP_PLUS OP_PLUS_O OP_PLUS_OK OP_MINUS OP_MINUS_E OP_MINUS_ER OP_MINUS_ERR OP_MINUS_ERR_SPC MINUS_ERR_ARG OP_C OP_CO OP_CON OP_CONN OP_CONNE OP_CONNEC OP_CONNECT CONNECT_ARG OP_P OP_PU OP_PUB OP_PUB_SPC PUB_ARG OP_PI OP_PIN OP_PING OP_PO OP_PON OP_PONG MSG_PAYLOAD MSG_END OP_S OP_SU OP_SUB OP_SUB_SPC SUB_ARG OP_U OP_UN OP_UNS OP_UNSU OP_UNSUB UNSUB_ARG OP_M OP_MS OP_MSG OP_MSG_SPC MSG_ARG OP_I OP_IN OP_INF OP_INFO INFO_ARG )
const ( RSID = "RSID" QRSID = "QRSID" RSID_CID_INDEX = 1 RSID_SID_INDEX = 2 EXPECTED_MATCHES = 3 )
const DefaultConnListSize = 1024
Variables ¶
var ( // ErrConnectionClosed represents error condition on a closed connection. ErrConnectionClosed = errors.New("Connection Closed") // ErrAuthorization represents error condition on failed authorization. ErrAuthorization = errors.New("Authorization Error") // ErrMaxPayload represents error condition when the payload is too big. ErrMaxPayload = errors.New("Maximum Payload Exceeded") )
Functions ¶
func PrintAndDie ¶
func PrintAndDie(msg string)
PrintAndDie is exported for access in other packages.
func PrintServerAndExit ¶
func PrintServerAndExit()
PrintServerAndExit will print our version and exit.
func RemoveSelfReference ¶ added in v0.5.6
func ResponseHandler ¶ added in v0.6.6
func ResponseHandler(w http.ResponseWriter, r *http.Request, data []byte)
ResponseHandler handles responses for monitoring routes
func RoutesFromStr ¶ added in v0.6.2
Types ¶
type Auth ¶ added in v0.6.0
type Auth interface {
Check(c ClientAuth) bool
}
type ByOutBytes ¶ added in v0.6.2
type ByOutBytes []Pair
func (ByOutBytes) Len ¶ added in v0.6.2
func (d ByOutBytes) Len() int
func (ByOutBytes) Less ¶ added in v0.6.2
func (d ByOutBytes) Less(i, j int) bool
func (ByOutBytes) Swap ¶ added in v0.6.2
func (d ByOutBytes) Swap(i, j int)
type ClientAuth ¶ added in v0.6.0
type ClientAuth interface {
GetOpts() *clientOpts
}
type ConnInfo ¶
type ConnInfo struct {
Cid uint64 `json:"cid"`
IP string `json:"ip"`
Port int `json:"port"`
Pending int `json:"pending_bytes"`
InMsgs int64 `json:"in_msgs"`
OutMsgs int64 `json:"out_msgs"`
InBytes int64 `json:"in_bytes"`
OutBytes int64 `json:"out_bytes"`
NumSubs uint32 `json:"subscriptions"`
Lang string `json:"lang,omitempty"`
Version string `json:"version,omitempty"`
Subs []string `json:"subscriptions_list,omitempty"`
}
ConnInfo has detailed information on a per connection basis.
type Connz ¶
type Connz struct {
Now time.Time `json:"now"`
NumConns int `json:"num_connections"`
Offset int `json:"offset"`
Limit int `json:"limit"`
Conns []*ConnInfo `json:"connections"`
}
Connz represents detailed information on current client connections.
type Info ¶
type Info struct {
ID string `json:"server_id"`
Version string `json:"version"`
GoVersion string `json:"go"`
Host string `json:"host"`
Port int `json:"port"`
AuthRequired bool `json:"auth_required"`
SslRequired bool `json:"ssl_required"`
MaxPayload int `json:"max_payload"`
}
Info is the information sent to clients to help them understand information about this server.
type Options ¶
type Options struct {
Host string `json:"addr"`
Port int `json:"port"`
Trace bool `json:"-"`
Debug bool `json:"-"`
NoLog bool `json:"-"`
NoSigs bool `json:"-"`
Logtime bool `json:"-"`
MaxConn int `json:"max_connections"`
Username string `json:"user,omitempty"`
Password string `json:"-"`
Authorization string `json:"-"`
PingInterval time.Duration `json:"ping_interval"`
MaxPingsOut int `json:"ping_max"`
HTTPPort int `json:"http_port"`
SslTimeout float64 `json:"ssl_timeout"`
AuthTimeout float64 `json:"auth_timeout"`
MaxControlLine int `json:"max_control_line"`
MaxPayload int `json:"max_payload"`
MaxPending int `json:"max_pending_size"`
ClusterHost string `json:"addr"`
ClusterPort int `json:"port"`
ClusterUsername string `json:"-"`
ClusterPassword string `json:"-"`
ClusterAuthTimeout float64 `json:"auth_timeout"`
ProfPort int `json:"-"`
PidFile string `json:"-"`
LogFile string `json:"-"`
Syslog bool `json:"-"`
RemoteSyslog string `json:"-"`
Routes []*url.URL `json:"-"`
RoutesStr string `json:"-"`
}
Options block for gnatsd server.
func MergeOptions ¶
MergeOptions will merge two options giving preference to the flagOpts if the item is present.
func ProcessConfigFile ¶
ProcessConfigFile processes a configuration file. FIXME(dlc): Hacky
type RouteInfo ¶ added in v0.6.0
type RouteInfo struct {
Rid uint64 `json:"rid"`
RemoteId string `json:"remote_id"`
DidSolicit bool `json:"did_solicit"`
IP string `json:"ip"`
Port int `json:"port"`
Pending int `json:"pending_size"`
InMsgs int64 `json:"in_msgs"`
OutMsgs int64 `json:"out_msgs"`
InBytes int64 `json:"in_bytes"`
OutBytes int64 `json:"out_bytes"`
NumSubs uint32 `json:"subscriptions"`
Subs []string `json:"subscriptions_list,omitempty"`
}
RouteInfo has detailed information on a per connection basis.
type Routez ¶ added in v0.6.0
type Routez struct {
Now time.Time `json:"now"`
NumRoutes int `json:"num_routes"`
Routes []*RouteInfo `json:"routes"`
}
Routez represents detailed information on current client connections.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server is our main struct.
func (*Server) AcceptLoop ¶
func (s *Server) AcceptLoop()
AcceptLoop is exported for easier testing.
func (*Server) Addr ¶ added in v0.5.4
Addr will return the net.Addr object for the current listener.
func (*Server) HandleConnz ¶
func (s *Server) HandleConnz(w http.ResponseWriter, r *http.Request)
HandleConnz process HTTP requests for connection information.
func (*Server) HandleRoot ¶ added in v0.6.2
func (s *Server) HandleRoot(w http.ResponseWriter, r *http.Request)
HandleRoot will show basic info and links to others handlers.
func (*Server) HandleRoutez ¶ added in v0.6.0
func (s *Server) HandleRoutez(w http.ResponseWriter, r *http.Request)
HandleRoutez process HTTP requests for route information.
func (*Server) HandleSubsz ¶ added in v0.6.0
func (s *Server) HandleSubsz(w http.ResponseWriter, r *http.Request)
HandleStats process HTTP requests for subjects stats.
func (*Server) HandleVarz ¶
func (s *Server) HandleVarz(w http.ResponseWriter, r *http.Request)
HandleVarz will process HTTP requests for server information.
func (*Server) NumClients ¶
NumClients will report the number of registered clients.
func (*Server) NumRemotes ¶
NumRemotes will report number of registered remotes.
func (*Server) NumSubscriptions ¶
NumSubscriptions will report how many subscriptions are active.
func (*Server) SetAuthMethod ¶ added in v0.6.0
Sets the authentication method
func (*Server) Shutdown ¶
func (s *Server) Shutdown()
Shutdown will shutdown the server instance by kicking out the AcceptLoop and closing all associated clients.
func (*Server) Start ¶
func (s *Server) Start()
Start up the server, this will block. Start via a Go routine if needed.
func (*Server) StartHTTPMonitoring ¶
func (s *Server) StartHTTPMonitoring()
StartHTTPMonitoring will enable the HTTP monitoring port.
func (*Server) StartProfiler ¶
func (s *Server) StartProfiler()
StartProfiler is called to enable dynamic profiling.
func (*Server) StartRouting ¶
func (s *Server) StartRouting()
StartRouting will start the accept loop on the cluster host:port and will actively try to connect to listed routes.
type Varz ¶
type Varz struct {
*Info
*Options
MaxPayload int `json:"max_payload"`
Start time.Time `json:"start"`
Now time.Time `json:"now"`
Uptime string `json:"uptime"`
Mem int64 `json:"mem"`
Cores int `json:"cores"`
CPU float64 `json:"cpu"`
Connections int `json:"connections"`
Routes int `json:"routes"`
Remotes int `json:"remotes"`
InMsgs int64 `json:"in_msgs"`
OutMsgs int64 `json:"out_msgs"`
InBytes int64 `json:"in_bytes"`
OutBytes int64 `json:"out_bytes"`
SlowConsumers int64 `json:"slow_consumers"`
}
Varz will output server information on the monitoring port at /varz.