PageRenderTime 27ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/src/org/gwt_websocketrpc/client/WsRpcBuilder.java

http://gwt-websocketrpc.googlecode.com/
Java | 92 lines | 71 code | 20 blank | 1 comment | 5 complexity | 89ca3fcfc5f8e144bc8dd8fb566db3a4 MD5 | raw file
  1. package org.gwt_websocketrpc.client;
  2. import org.gwt_websocketrpc.client.WebSocketController.RequestCallbackRegistration;
  3. import com.google.gwt.http.client.Request;
  4. import com.google.gwt.http.client.RequestBuilder;
  5. import com.google.gwt.http.client.RequestCallback;
  6. import com.google.gwt.http.client.RequestException;
  7. import com.google.gwt.user.client.rpc.RpcRequestBuilder;
  8. public class WsRpcBuilder extends RpcRequestBuilder {
  9. private static class WsRequest extends Request {
  10. private RequestCallbackRegistration reg;
  11. public WsRequest(RequestCallbackRegistration reg) {
  12. super();
  13. this.reg = reg;
  14. }
  15. @Override
  16. public void cancel() {
  17. if(reg != null){
  18. reg.removeHandler();
  19. reg = null;
  20. }
  21. }
  22. @Override
  23. public boolean isPending() {
  24. if(reg!=null)
  25. if(reg.isPending()) return true;
  26. else reg = null;
  27. return false;
  28. }
  29. }
  30. protected static class WsRequestBuilder extends RequestBuilder {
  31. private final WebSocketController wsc;
  32. int reqid;
  33. private final boolean isHandler;
  34. public WsRequestBuilder(boolean isHandler, String url) {
  35. super(RequestBuilder.POST.toString(), url);
  36. this.isHandler = isHandler;
  37. wsc = createWebSocketController(url);
  38. }
  39. protected WebSocketController createWebSocketController(String url) {
  40. return WebSocketController.createOrGetWebSocketController(url);
  41. }
  42. @Override
  43. public Request send() throws RequestException {
  44. return doSend(getRequestData(), getCallback());
  45. }
  46. @Override
  47. public Request sendRequest(String requestData, RequestCallback callback)
  48. throws RequestException {
  49. return doSend(requestData, callback);
  50. }
  51. protected Request doSend(final String data, final RequestCallback callback){
  52. RequestCallbackRegistration reg = wsc.sendRequest(isHandler, reqid, data,callback);
  53. return new WsRequest(reg);
  54. }
  55. }
  56. private boolean isHandler = false;
  57. void setIsHandler(boolean isHandler){
  58. this.isHandler = isHandler;
  59. }
  60. @Override
  61. protected RequestBuilder doCreate(String serviceEntryPoint) {
  62. // Reset isHandler
  63. boolean h = isHandler;
  64. isHandler = false;
  65. return new WsRequestBuilder(h, serviceEntryPoint);
  66. }
  67. @Override
  68. protected void doSetRequestId(RequestBuilder rb, int id) {
  69. super.doSetRequestId(rb, id);
  70. ((WsRequestBuilder)rb).reqid = id;
  71. }
  72. }