Browse Source

Ability to send multiple ack data objects

master
Nikita 13 years ago
parent
commit
71215029c9
  1. 18
      src/main/java/com/corundumstudio/socketio/AckRequest.java
  2. 2
      src/main/java/com/corundumstudio/socketio/PacketHandler.java

18
src/main/java/com/corundumstudio/socketio/AckRequest.java

@ -52,16 +52,26 @@ public class AckRequest {
* Send ack data to client.
* Can be invoked only once.
*
* @param obj - ack data object
* @param objs - ack data objects
*/
public void sendAckData(Object obj) {
public void sendAckData(Object ... objs) {
List<Object> args = Arrays.asList(objs);
sendAckData(args);
}
/**
* Send ack data to client.
* Can be invoked only once.
*
* @param objs - ack data object list
*/
public void sendAckData(List<Object> objs) {
if (!isAckRequested() || !sended.compareAndSet(false, true)) {
return;
}
Packet ackPacket = new Packet(PacketType.ACK);
ackPacket.setAckId(originalPacket.getId());
List<Object> args = Arrays.asList(obj);
ackPacket.setArgs(args);
ackPacket.setArgs(objs);
client.send(ackPacket);
}

2
src/main/java/com/corundumstudio/socketio/PacketHandler.java

@ -64,7 +64,7 @@ public class PacketHandler extends SimpleChannelUpstreamHandler {
SocketIOClient client = message.getClient().getChildClient(ns);
AckRequest ackSender = new AckRequest(packet, client);
packetListener.onPacket(packet, client, ackSender);
ackSender.sendAckData(null);
ackSender.sendAckData((Object)null);
}
} else {
ctx.sendUpstream(e);

Loading…
Cancel
Save