@@ -76,6 +76,7 @@ public class MqttConnectHandler extends MqttTimeoutInboundHandler {
76
76
private final @ NotNull MqttDisconnectOnConnAckHandler disconnectOnConnAckHandler ;
77
77
78
78
private boolean connectCalled = false ;
79
+ private long connectFlushTime ;
79
80
80
81
@ Inject
81
82
MqttConnectHandler (
@@ -122,6 +123,7 @@ public void handlerAdded(final @NotNull ChannelHandlerContext ctx) {
122
123
* @param ctx the channel handler context.
123
124
*/
124
125
private void writeConnect (final @ NotNull ChannelHandlerContext ctx ) {
126
+ connectFlushTime = System .nanoTime ();
125
127
ctx .writeAndFlush ((connect .getRawEnhancedAuthMechanism () == null ) ?
126
128
connect .createStateful (clientConfig .getRawClientIdentifier (), null ) : connect ).addListener (this );
127
129
}
@@ -163,8 +165,7 @@ public void channelRead(final @NotNull ChannelHandlerContext ctx, final @NotNull
163
165
*/
164
166
private void readConnAck (final @ NotNull MqttConnAck connAck , final @ NotNull Channel channel ) {
165
167
if (connAck .getReasonCode ().isError ()) {
166
- MqttDisconnectUtil .close (channel , new Mqtt5ConnAckException (
167
- connAck ,
168
+ MqttDisconnectUtil .close (channel , new Mqtt5ConnAckException (connAck ,
168
169
"CONNECT failed as CONNACK contained an Error Code: " + connAck .getReasonCode () + "." ));
169
170
170
171
} else if (validateClientIdentifier (connAck , channel )) {
@@ -178,7 +179,8 @@ private void readConnAck(final @NotNull MqttConnAck connAck, final @NotNull Chan
178
179
179
180
final int keepAlive = connectionConfig .getKeepAlive ();
180
181
if (keepAlive > 0 ) {
181
- channel .pipeline ().addAfter (MqttDecoder .NAME , MqttPingHandler .NAME , new MqttPingHandler (keepAlive ));
182
+ final MqttPingHandler pingHandler = new MqttPingHandler (keepAlive , connectFlushTime , System .nanoTime ());
183
+ channel .pipeline ().addAfter (MqttDecoder .NAME , MqttPingHandler .NAME , pingHandler );
182
184
}
183
185
184
186
clientConfig .getRawState ().set (MqttClientState .CONNECTED );
0 commit comments