public void onAck(SocketIOClient client, Packet packet) {
AckSchedulerKey key = new AckSchedulerKey(Type.ACK_TIMEOUT, client.getSessionId(), packet.getAckId());
scheduler.cancel(key);
AckCallback callback = removeCallback(client.getSessionId(), packet.getAckId());
if (callback == null) {
return;
}
if (callback instanceof MultiTypeAckCallback) {
callback.onSuccess(new MultiTypeArgs(packet.getArgs()));
} else {
Object param = null;
if (!packet.getArgs().isEmpty()) {
param = packet.getArgs().get(0);
}
if (packet.getArgs().size() > 1) {
log.error("Wrong ack args amount. Should be only one argument, but current amount is: {}. Ack id: {}, sessionId: {}",
packet.getArgs().size(), packet.getAckId(), client.getSessionId());
}
callback.onSuccess(param);
}
}