@@ -125,6 +125,8 @@ type Server struct {
125
125
packetsForwardedOut expvar.Int
126
126
packetsForwardedIn expvar.Int
127
127
peerGoneFrames expvar.Int // number of peer gone frames sent
128
+ gotPing expvar.Int // number of ping frames from client
129
+ sentPong expvar.Int // number of pong frames enqueued to client
128
130
accepts expvar.Int
129
131
curClients expvar.Int
130
132
curHomeClients expvar.Int // ones with preferred
@@ -770,6 +772,7 @@ func (c *sclient) handleFrameWatchConns(ft frameType, fl uint32) error {
770
772
}
771
773
772
774
func (c * sclient ) handleFramePing (ft frameType , fl uint32 ) error {
775
+ c .s .gotPing .Add (1 )
773
776
var m PingMessage
774
777
if fl < uint32 (len (m )) {
775
778
return fmt .Errorf ("short ping: %v" , fl )
@@ -1422,6 +1425,7 @@ func (c *sclient) sendKeepAlive() error {
1422
1425
1423
1426
// sendPong sends a pong reply, without flushing.
1424
1427
func (c * sclient ) sendPong (data [8 ]byte ) error {
1428
+ c .s .sentPong .Add (1 )
1425
1429
c .setWriteDeadline ()
1426
1430
if err := writeFrameHeader (c .bw .bw (), framePong , uint32 (len (data ))); err != nil {
1427
1431
return err
@@ -1671,6 +1675,8 @@ func (s *Server) ExpVar() expvar.Var {
1671
1675
m .Set ("unknown_frames" , & s .unknownFrames )
1672
1676
m .Set ("home_moves_in" , & s .homeMovesIn )
1673
1677
m .Set ("home_moves_out" , & s .homeMovesOut )
1678
+ m .Set ("got_ping" , & s .gotPing )
1679
+ m .Set ("sent_pong" , & s .sentPong )
1674
1680
m .Set ("peer_gone_frames" , & s .peerGoneFrames )
1675
1681
m .Set ("packets_forwarded_out" , & s .packetsForwardedOut )
1676
1682
m .Set ("packets_forwarded_in" , & s .packetsForwardedIn )
0 commit comments