clone
This commit is contained in:
24
server/system/system.go
Normal file
24
server/system/system.go
Normal file
@ -0,0 +1,24 @@
|
||||
package system
|
||||
|
||||
// Info contains atomic counters and values for various server statistics
|
||||
// commonly found in $SYS topics.
|
||||
type Info struct {
|
||||
Version string `json:"version"` // the current version of the server.
|
||||
Started int64 `json:"started"` // the time the server started in unix seconds.
|
||||
Uptime int64 `json:"uptime"` // the number of seconds the server has been online.
|
||||
BytesRecv int64 `json:"bytes_recv"` // the total number of bytes received in all packets.
|
||||
BytesSent int64 `json:"bytes_sent"` // the total number of bytes sent to clients.
|
||||
ClientsConnected int64 `json:"clients_connected"` // the number of currently connected clients.
|
||||
ClientsDisconnected int64 `json:"clients_disconnected"` // the number of disconnected non-cleansession clients.
|
||||
ClientsMax int64 `json:"clients_max"` // the maximum number of clients that have been concurrently connected.
|
||||
ClientsTotal int64 `json:"clients_total"` // the sum of all clients, connected and disconnected.
|
||||
ConnectionsTotal int64 `json:"connections_total"` // the sum number of clients which have ever connected.
|
||||
MessagesRecv int64 `json:"messages_recv"` // the total number of packets received.
|
||||
MessagesSent int64 `json:"messages_sent"` // the total number of packets sent.
|
||||
PublishDropped int64 `json:"publish_dropped"` // the number of in-flight publish messages which were dropped.
|
||||
PublishRecv int64 `json:"publish_recv"` // the total number of received publish packets.
|
||||
PublishSent int64 `json:"publish_sent"` // the total number of sent publish packets.
|
||||
Retained int64 `json:"retained"` // the number of messages currently retained.
|
||||
Inflight int64 `json:"inflight"` // the number of messages currently in-flight.
|
||||
Subscriptions int64 `json:"subscriptions"` // the total number of filter subscriptions.
|
||||
}
|
21
server/system/system_test.go
Normal file
21
server/system/system_test.go
Normal file
@ -0,0 +1,21 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestInfoAlignment(t *testing.T) {
|
||||
typ := reflect.TypeOf(Info{})
|
||||
for i := 0; i < typ.NumField(); i++ {
|
||||
f := typ.Field(i)
|
||||
switch f.Type.Kind() {
|
||||
case reflect.Int64, reflect.Uint64:
|
||||
require.Equalf(t, uintptr(0), f.Offset%8,
|
||||
"%s requires 64-bit alignment for atomic: offset %d",
|
||||
f.Name, f.Offset)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user