Browse Source

Thread safety for XHRPollingClient

master
Nikita 14 years ago
parent
commit
8445e6b4a8
  1. 10
      src/main/java/com/corundumstudio/socketio/parser/Encoder.java
  2. 9
      src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java

10
src/main/java/com/corundumstudio/socketio/parser/Encoder.java

@ -25,7 +25,7 @@ public class Encoder {
this.objectMapper = objectMapper;
}
public String encodePayload(List<String> packets) {
public CharSequence encodePayload(List<String> packets) {
if (packets.size() == 1) {
return packets.get(0);
}
@ -33,7 +33,7 @@ public class Encoder {
for (String packet : packets) {
result.append('\ufffd').append(packet.length()).append('\ufffd').append(packet);
}
return result.toString();
return result;
}
public String encodePacket(Packet packet) throws IOException {
@ -91,12 +91,12 @@ public class Encoder {
errorData.append("+").append(adviceCode);
}
}
data = errorData.toString();
data = errorData;
break;
}
List<Object> params = new ArrayList<Object>();
List<Object> params = new ArrayList<Object>(4);
params.add(type);
if ("data".equals(ack)) {
params.add(id + "+");
@ -114,7 +114,7 @@ public class Encoder {
private String join(String delimiter, List<Object> args) {
StringBuilder result = new StringBuilder();
for (Object arg : args) {
result.append(arg).append(":");
result.append(arg).append(delimiter);
}
return result.substring(0, result.length()-1);
}

9
src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java

@ -76,12 +76,12 @@ public class XHRPollingClient implements SocketIOClient {
if(!connected || messages.isEmpty()) {
return NullChannelFuture.INSTANCE;
}
String data = encoder.encodePayload(messages);
CharSequence data = encoder.encodePayload(messages);
messages.clear();
return write(data);
}
private ChannelFuture write(String message) {
private ChannelFuture write(CharSequence message) {
HttpResponse res = new DefaultHttpResponse(HTTP_1_1, HttpResponseStatus.OK);
res.addHeader(CONTENT_TYPE, "text/plain; charset=UTF-8");
@ -125,15 +125,14 @@ public class XHRPollingClient implements SocketIOClient {
}
}
public ChannelFuture sendUnencoded(String message) {
public synchronized ChannelFuture sendUnencoded(String message) {
messages.add(message);
return sendPayload();
}
public ChannelFuture sendJsonp(String message) {
jsonp = true;
messages.add(message);
return sendPayload();
return sendUnencoded(message);
}
public void disconnect() {

Loading…
Cancel
Save