| 343 | } |
| 344 | |
| 345 | private void onevent(Packet<JSONArray> packet) { |
| 346 | List<Object> args = new ArrayList<>(Arrays.asList(toArray(packet.data))); |
| 347 | if (logger.isLoggable(Level.FINE)) { |
| 348 | logger.fine(String.format("emitting event %s", args)); |
| 349 | } |
| 350 | |
| 351 | if (packet.id >= 0) { |
| 352 | logger.fine("attaching ack callback to event"); |
| 353 | args.add(this.ack(packet.id)); |
| 354 | } |
| 355 | |
| 356 | if (this.connected) { |
| 357 | if (args.isEmpty()) return; |
| 358 | if (!this.onAnyIncomingListeners.isEmpty()) { |
| 359 | Object[] argsAsArray = args.toArray(); |
| 360 | for (Listener listener : this.onAnyIncomingListeners) { |
| 361 | listener.call(argsAsArray); |
| 362 | } |
| 363 | } |
| 364 | String event = args.remove(0).toString(); |
| 365 | super.emit(event, args.toArray()); |
| 366 | } else { |
| 367 | this.receiveBuffer.add(args); |
| 368 | } |
| 369 | } |
| 370 | |
| 371 | private Ack ack(final int id) { |
| 372 | final Socket self = this; |