Package org.eclipse.jetty.continuation

Examples of org.eclipse.jetty.continuation.Continuation


                    dataHandler.onWriteData(continuation.getServletResponse(), data.toString());
                } catch (IOException e) {
                    throw new SocketIOException(e);
                }
                if (!dataHandler.isConnectionPersistent() && !continuation.isInitial()) {
                    Continuation cont = continuation;
                    continuation = null;
                    cont.complete();
                } else {
                    getSession().startHeartbeatTimer();
                }
            } else {
                String data = frame.encode();
View Full Code Here


    public void handle(HttpServletRequest request, HttpServletResponse response, SocketIOSession session) throws IOException {
        if ("GET".equals(request.getMethod())) {
            if (!is_open && buffer.isEmpty()) {
                response.sendError(HttpServletResponse.SC_NOT_FOUND);
            } else {
                Continuation cont = (Continuation) request.getAttribute(CONTINUATION_KEY);
                if (continuation != null || cont != null) {
                    if (continuation == cont) {
                        continuation = null;
                        dataHandler.onFinishSend(response);
                    }
View Full Code Here

    public void abort() {
        getSession().clearHeartbeatTimer();
        getSession().clearTimeoutTimer();
        is_open = false;
        if (continuation != null) {
            Continuation cont = continuation;
            continuation = null;
            if (cont.isSuspended()) {
                cont.complete();
            }
        }
        buffer.setListener(new TransportBuffer.BufferListener() {
            @Override
            public boolean onMessages(List<String> messages) {
View Full Code Here

                    }
                }
            }

            if (message == null) {
                Continuation continuation = ContinuationSupport.getContinuation(request);
               
                if (continuation.isExpired()) { 
                    response.setStatus(HttpServletResponse.SC_OK);
                    StringWriter swriter = new StringWriter();
                    PrintWriter writer = new PrintWriter(swriter);
                    writer.println("<ajax-response>");
                    writer.print("</ajax-response>");

                    writer.flush();
                    String m = swriter.toString();
                    response.getWriter().println(m);
                   
                    return;
                }

                continuation.setTimeout(timeout);
                continuation.suspend();
               
                // Fetch the listeners
                Listener listener = getListener(request);

                // register this continuation with our listener.
View Full Code Here

            if (LOG.isDebugEnabled()) {
                LOG.debug("Receiving message(s) from: " + destination + " with timeout: " + timeout);
            }

            Continuation continuation = null;
            Listener listener = null;
           

            // Look for any available messages
            message = consumer.receive(10);

            // Get an existing Continuation or create a new one if there are
            // no events.
            if (message == null) {
                continuation = ContinuationSupport.getContinuation(request);
               
                if (continuation.isExpired()) {
                    response.setStatus(HttpServletResponse.SC_NO_CONTENT);
                    return;
                }

                continuation.setTimeout(timeout);
                continuation.suspend();
               
                // Fetch the listeners
                listener = (Listener)consumer.getAvailableListener();
                if (listener == null) {
                    listener = new Listener(consumer);
View Full Code Here

//        inactivityChecker.interrupt();
    }

    @Test
    public void testWrite0() {
        Continuation continuation = mocksControl.createMock(Continuation.class);
        HttpServletRequest httpServletRequest = mocksControl.createMock(HttpServletRequest.class);
        expect(httpServletRequest.getAttribute(Continuation.ATTRIBUTE)).andReturn(continuation);
        expectLastCall().atLeastOnce();
        continuation.setTimeout(anyLong());
        continuation.setAttribute(eq("request"), EasyMock.<BoshRequest> notNull());
        continuation.suspend();
        continuation.resume();
        continuation.addContinuationListener(EasyMock.<ContinuationListener> anyObject());
        Capture<BoshResponse> captured = new Capture<BoshResponse>();
        continuation.setAttribute(eq("response"), EasyMock.<BoshResponse> capture(captured));
        mocksControl.replay();

        BoshBackedSessionContext boshBackedSessionContext = new BoshBackedSessionContext(boshHandler, serverRuntimeContext, inactivityChecker);
        Stanza body = new StanzaBuilder("body", NamespaceURIs.XEP0124_BOSH).build();
        boshBackedSessionContext.insertRequest(new BoshRequest(httpServletRequest, body, 1L));
View Full Code Here

    public void testRequestExpired() {
        Stanza body = new StanzaBuilder("body", NamespaceURIs.XEP0124_BOSH).build();

        // addRequest
        HttpServletRequest httpServletRequest = mocksControl.createMock(HttpServletRequest.class);
        Continuation continuation = mocksControl.createMock(Continuation.class);
        expect(httpServletRequest.getAttribute(Continuation.ATTRIBUTE)).andReturn(continuation);
        expectLastCall().atLeastOnce();
        continuation.setTimeout(anyLong());
        continuation.suspend();
        continuation.setAttribute(eq("request"), EasyMock.<BoshRequest> notNull());

        Capture<ContinuationListener> listenerCaptured = new Capture<ContinuationListener>();
        continuation.addContinuationListener(EasyMock.<ContinuationListener> capture(listenerCaptured));
       
        BoshRequest br = new BoshRequest(httpServletRequest, body, 1L);

        // requestExpired
        expect(continuation.getAttribute("request")).andReturn(br);
        Capture<BoshResponse> responseCaptured = new Capture<BoshResponse>();
        continuation.setAttribute(eq("response"), EasyMock.<BoshResponse> capture(responseCaptured));

        expect(boshHandler.getEmptyResponse()).andReturn(body);
        expectLastCall().atLeastOnce();

        // write0
        continuation.resume();

        mocksControl.replay();
        BoshBackedSessionContext boshBackedSessionContext = new BoshBackedSessionContext(boshHandler, serverRuntimeContext, inactivityChecker);
       
        boshBackedSessionContext.insertRequest(br);
View Full Code Here

    @Test
    public void testAddRequest() {
        // addRequest
        HttpServletRequest httpServletRequest1 = mocksControl.createMock(HttpServletRequest.class);
        HttpServletRequest httpServletRequest2 = mocksControl.createMock(HttpServletRequest.class);
        Continuation continuation1 = mocksControl.createMock(Continuation.class);
        Continuation continuation2 = mocksControl.createMock(Continuation.class);
        expect(httpServletRequest1.getAttribute(Continuation.ATTRIBUTE)).andReturn(continuation1);
        expectLastCall().atLeastOnce();
        expect(httpServletRequest2.getAttribute(Continuation.ATTRIBUTE)).andReturn(continuation2);
        expectLastCall().atLeastOnce();
        continuation1.setTimeout(anyLong());
        continuation1.suspend();
        Capture<BoshRequest> br1 = new Capture<BoshRequest>();
        continuation1.setAttribute(eq("request"), EasyMock.<BoshRequest> capture(br1));
        continuation2.setTimeout(anyLong());
        continuation2.suspend();
        Capture<BoshRequest> br2 = new Capture<BoshRequest>();
        continuation2.setAttribute(eq("request"), EasyMock.<BoshRequest> capture(br2));
        continuation1.addContinuationListener(EasyMock.<ContinuationListener> anyObject());
        continuation2.addContinuationListener(EasyMock.<ContinuationListener> anyObject());
       
        Stanza body = new StanzaBuilder("body", NamespaceURIs.XEP0124_BOSH).build();
        expect(boshHandler.addAttribute(eq(body), eq("ack"), Long.toString(EasyMock.anyLong()))).andReturn(body);

        // write0
View Full Code Here

    }

    @Test
    public void testAddRequestWithDelayedResponses() {
        HttpServletRequest httpServletRequest = mocksControl.createMock(HttpServletRequest.class);
        Continuation continuation = mocksControl.createMock(Continuation.class);
        expect(httpServletRequest.getAttribute(Continuation.ATTRIBUTE)).andReturn(continuation);
        expectLastCall().atLeastOnce();
        continuation.setTimeout(anyLong());
        continuation.suspend();
        continuation.setAttribute(eq("request"), EasyMock.<BoshRequest> notNull());

        continuation.addContinuationListener(EasyMock.<ContinuationListener> anyObject());

        Stanza body1 = mocksControl.createMock(Stanza.class);
        Stanza body2 = mocksControl.createMock(Stanza.class);
        Stanza body = new StanzaBuilder("body", NamespaceURIs.XEP0124_BOSH).build();
        expect(boshHandler.mergeResponses(EasyMock.<Stanza> anyObject(), EasyMock.<Stanza> anyObject()))
                .andReturn(body);
        expectLastCall().times(2);

        continuation.setAttribute(eq("response"), EasyMock.<BoshResponse> anyObject());
        continuation.resume();

        mocksControl.replay();

        BoshBackedSessionContext boshBackedSessionContext = new BoshBackedSessionContext(boshHandler,
                serverRuntimeContext, inactivityChecker);
View Full Code Here

  @Override
  public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) throws IOException, ServletException {
    final HttpServletRequest req = (HttpServletRequest) request;
    final HttpServletResponse rsp = (HttpServletResponse) response;
    final Continuation cont = ContinuationSupport.getContinuation(req);

    WorkQueue.Executor executor = getExecutor();

    if (cont.isInitial()) {
      TaskThunk task = new TaskThunk(executor, cont, req);
      if (maxWait > 0) {
        cont.setTimeout(maxWait);
      }
      cont.suspend(rsp);
      cont.addContinuationListener(task);
      cont.setAttribute(TASK, task);
      executor.submit(task);

    } else if (cont.isExpired()) {
      rsp.sendError(SC_SERVICE_UNAVAILABLE);

    } else if (cont.isResumed() && cont.getAttribute(CANCEL) == Boolean.TRUE) {
      rsp.sendError(SC_SERVICE_UNAVAILABLE);

    } else if (cont.isResumed()) {
      TaskThunk task = (TaskThunk) cont.getAttribute(TASK);
      try {
        task.begin(Thread.currentThread());
        chain.doFilter(req, rsp);
      } finally {
        task.end();
View Full Code Here

TOP

Related Classes of org.eclipse.jetty.continuation.Continuation

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.