fix sending binary and add tests

This commit is contained in:
Naoyuki Kanezawa
2014-04-11 02:56:12 +09:00
parent 9338615745
commit 03f4028b0f
5 changed files with 226 additions and 9 deletions

View File

@@ -24,7 +24,7 @@ public class HasBinaryData {
JSONArray _obj = (JSONArray)obj;
int length = _obj.length();
for (int i = 0; i < length; i++) {
if (recursiveCheckForBinary(_obj.get(i))) {
if (recursiveCheckForBinary(_obj.isNull(i) ? null : _obj.get(i))) {
return true;
}
}

View File

@@ -280,7 +280,12 @@ public class Manager extends Emitter {
this.subs.add(On.on(socket, Engine.EVENT_DATA, new Listener() {
@Override
public void call(Object... objects) {
Manager.this.ondata((String)objects[0]);
Object data = objects[0];
if (data instanceof String) {
Manager.this.ondata((String)data);
} else if (data instanceof byte[]) {
Manager.this.ondata((byte[])data);
}
}
}));
this.subs.add(On.on(this.decoder, Parser.Decoder.EVENT_DECODED, new Listener() {
@@ -307,6 +312,10 @@ public class Manager extends Emitter {
this.decoder.add(data);
}
private void ondata(byte[] data) {
this.decoder.add(data);
}
private void ondecoded(Packet packet) {
this.emit(EVENT_PACKET, packet);
}

View File

@@ -146,7 +146,10 @@ public class Socket extends Emitter {
List<Object> _args = new ArrayList<Object>(args.length + 1);
_args.add(event);
_args.addAll(Arrays.asList(args));
JSONArray jsonArgs = new JSONArray(_args);
JSONArray jsonArgs = new JSONArray();
for (Object arg : _args) {
jsonArgs.put(arg);
}
int parserType = Parser.EVENT;
if (HasBinaryData.hasBinary(jsonArgs)) { parserType = Parser.BINARY_EVENT; }
Packet<JSONArray> packet = new Packet<JSONArray>(parserType, jsonArgs);