func (c *Connection) ping(ctx context.Context) error {
	req := &pingReq{id: c.NextMessageID()}
	mex, err := c.outbound.newExchange(ctx, c.opts.FramePool, req.messageType(), req.ID(), 1)
	if err != nil {
		return c.connectionError("create ping exchange", err)
	}
	defer c.outbound.removeExchange(req.ID())

	if err := c.sendMessage(req); err != nil {
		return c.connectionError("send ping", err)
	}

	return c.recvMessage(ctx, &pingRes{}, mex)
}
func (c *Connection) ping(ctx context.Context) error {
	req := &pingReq{id: c.NextMessageID()}
	mex, err := c.outbound.newExchange(ctx, c.opts.FramePool, req.messageType(), req.ID(), 1)
	if err != nil {
		return c.connectionError("create ping exchange", err)
	}
	defer c.outbound.removeExchange(req.ID())

	if err := c.sendMessage(req); err != nil {
		return c.connectionError("send ping", err)
	}

	return c.recvMessage(ctx, &pingRes{}, mex)
}
func ( c * Connection ) ping ( ctx context . Context ) error { req := & pingReq { id : c . NextMessageID ( ) } mex , err := c . outbound . newExchange ( ctx , c . opts . FramePool , req . messageType ( ) , req . ID ( ) , 1 ) if err != nil { return c . connectionError ( " " , err ) } defer c . outbound . removeExchange ( req . ID ( ) ) if err := c . sendMessage ( req ) ; err != nil { return c . connectionError ( " " , err ) } return c . recvMessage ( ctx , & pingRes { } , mex ) }
// ping sends a ping message and waits for a ping response.
ping sends a ping message and waits for a ping response .