diff --git a/stats/stats.go b/stats/stats.go index fd592d00..116bfce5 100644 --- a/stats/stats.go +++ b/stats/stats.go @@ -48,6 +48,8 @@ import ( // All stats types in this package implements this interface. type Stats interface { isStats() + // ClientStats indicates if the stats is a client stats. + ClientStats() bool } // IncomingPayloadStats contains the information for a incoming payload. @@ -68,6 +70,9 @@ type IncomingPayloadStats struct { func (s *IncomingPayloadStats) isStats() {} +// ClientStats indicates if the stats is a client stats. +func (s *IncomingPayloadStats) ClientStats() bool { return s.IsClient } + // IncomingHeaderStats indicates a header is received. // Method, addresses and Encryption are only valid if IsClient is false. type IncomingHeaderStats struct { @@ -88,6 +93,9 @@ type IncomingHeaderStats struct { func (s *IncomingHeaderStats) isStats() {} +// ClientStats indicates if the stats is a client stats. +func (s *IncomingHeaderStats) ClientStats() bool { return s.IsClient } + // IncomingTrailerStats indicates a trailer is received. type IncomingTrailerStats struct { // IsClient indicates if this stats is a client stats. @@ -98,6 +106,9 @@ type IncomingTrailerStats struct { func (s *IncomingTrailerStats) isStats() {} +// ClientStats indicates if the stats is a client stats. +func (s *IncomingTrailerStats) ClientStats() bool { return s.IsClient } + // OutgoingPayloadStats contains the information for a outgoing payload. type OutgoingPayloadStats struct { // IsClient indicates if this stats is a client stats. @@ -116,6 +127,9 @@ type OutgoingPayloadStats struct { func (s *OutgoingPayloadStats) isStats() {} +// ClientStats indicates if the stats is a client stats. +func (s *OutgoingPayloadStats) ClientStats() bool { return s.IsClient } + // OutgoingHeaderStats indicates a header is sent. // Method, addresses and Encryption are only valid if IsClient is true. type OutgoingHeaderStats struct { @@ -136,6 +150,9 @@ type OutgoingHeaderStats struct { func (s *OutgoingHeaderStats) isStats() {} +// ClientStats indicates if the stats is a client stats. +func (s *OutgoingHeaderStats) ClientStats() bool { return s.IsClient } + // OutgoingTrailerStats indicates a trailer is sent. type OutgoingTrailerStats struct { // IsClient indicates if this stats is a client stats. @@ -146,6 +163,9 @@ type OutgoingTrailerStats struct { func (s *OutgoingTrailerStats) isStats() {} +// ClientStats indicates if the stats is a client stats. +func (s *OutgoingTrailerStats) ClientStats() bool { return s.IsClient } + // ErrorStats indicates an error happens. type ErrorStats struct { // IsClient indicates if this stats is a client stats. @@ -156,6 +176,9 @@ type ErrorStats struct { func (s *ErrorStats) isStats() {} +// ClientStats indicates if the stats is a client stats. +func (s *ErrorStats) ClientStats() bool { return s.IsClient } + var ( on = new(int32) handler func(context.Context, Stats)