package metrics import ( "sync" ) type ServerMetrics interface { NewClient() CloseClient() NewProxy(name string, proxyType string) CloseProxy(name string, proxyType string) OpenConnection(name string, proxyType string) CloseConnection(name string, proxyType string) AddTrafficIn(name string, proxyType string, trafficBytes int64) AddTrafficOut(name string, proxyType string, trafficBytes int64) } var Server ServerMetrics = noopServerMetrics{} var registerMetrics sync.Once func Register(m ServerMetrics) { registerMetrics.Do(func() { Server = m }) } type noopServerMetrics struct{} func (noopServerMetrics) NewClient() {} func (noopServerMetrics) CloseClient() {} func (noopServerMetrics) NewProxy(string, string) {} func (noopServerMetrics) CloseProxy(string, string) {} func (noopServerMetrics) OpenConnection(string, string) {} func (noopServerMetrics) CloseConnection(string, string) {} func (noopServerMetrics) AddTrafficIn(string, string, int64) {} func (noopServerMetrics) AddTrafficOut(string, string, int64) {}