Package org.jboss.errai.bus.server.api

Examples of org.jboss.errai.bus.server.api.MessageQueue


    if (!message.hasResource(Resources.Session.name())) {
      handleMessageDeliveryFailure(this, message,
          "cannot automatically route message. no session contained in message.", null, false);
    }

    final MessageQueue queue = getQueue(getSession(message));

    if (queue == null) {
      handleMessageDeliveryFailure(this, message,
          "cannot automatically route message. no session contained in message.", null, false);
    }
View Full Code Here


  private static QueueSession getSession(final Message message) {
    return message.getResource(QueueSession.class, Resources.Session.name());
  }

  private MessageQueue getQueueByMessage(final Message message) {
    final MessageQueue queue = getQueue(getSession(message));
    if (queue == null) {
      throw new QueueUnavailableException("no queue available to send. (queue or session may have expired): " +
          "(session id: " + getSession(message).getSessionId() + ")");
    }
    else {
View Full Code Here

      int paged = 0, killed = 0;

      while (!houseKeepingPerformed) {
        try {
          final Iterator<MessageQueue> iter = ServerMessageBusImpl.this.messageQueues.values().iterator();
          MessageQueue q;
          while (iter.hasNext()) {
            if ((q = iter.next()).isStale()) {
              iter.remove();
              endSessions.add(q);
              killed++;
View Full Code Here

    if (!message.hasResource(Resources.Session.name())) {
      handleMessageDeliveryFailure(this, message,
          "cannot automatically route message. no session contained in message.", null, false);
    }

    final MessageQueue queue = getQueue(getSession(message));

    if (queue == null) {
      handleMessageDeliveryFailure(this, message,
          "cannot automatically route message. no session contained in message.", null, false);
    }
View Full Code Here

  private static QueueSession getSession(final Message message) {
    return message.getResource(QueueSession.class, Resources.Session.name());
  }

  private MessageQueue getQueueByMessage(final Message message) {
    final MessageQueue queue = getQueue(getSession(message));
    if (queue == null) {
      throw new QueueUnavailableException("no queue available to send. (queue or session may have expired): " +
          "(session id: " + getSession(message).getSessionId() + ")");
    }
    else {
View Full Code Here

          case Associate: {
            List<Message> deferred = null;
            synchronized (messageQueues) {
              if (messageQueues.containsKey(session)) {
                final MessageQueue q = messageQueues.get(session);
                synchronized (q) {
                  if (deferredQueue.containsKey(q)) {
                    deferred = deferredQueue.remove(q);
                  }
                }
View Full Code Here

    try {
      // note about caching: clients now include a uniquifier in a request parameter called "z"
      // so no-cache headers are now unnecessary.
      httpServletResponse.setContentType("application/json");

      final MessageQueue queue = service.getBus().getQueue(session);

      ServletOutputStream outputStream = httpServletResponse.getOutputStream();
      if (queue == null) {
        switch (getConnectionPhase(httpServletRequest)) {
          case CONNECTING:
          case DISCONNECTING:
            return;
        }

        sendDisconnectDueToSessionExpiry(outputStream);
        return;
      }

      queue.heartBeat();

      queue.poll(wait, outputStream);

      outputStream.close();
    }
    catch (final Throwable t) {
      t.printStackTrace();
View Full Code Here

      IOException {
   
    final QueueSession session = sessionProvider.getSession(request.getSession(),
        request.getHeader(ClientMessageBus.REMOTE_QUEUE_ID_HEADER));

    final MessageQueue queue = service.getBus().getQueue(session);
    if (queue == null) {
      switch (getConnectionPhase(request)) {
      case CONNECTING:
      case DISCONNECTING:
        return;
      }
      sendDisconnectDueToSessionExpiry(response.getOutputStream());
      return;
    }

    response.setContentType("application/json");
    if (queue.messagesWaiting()) {
      queue.poll(false, response.getOutputStream());
      return;
    }
   
    final AsyncContext asyncContext = request.startAsync();
    asyncContext.addListener(new AsyncListener() {
      @Override
      public void onTimeout(AsyncEvent event) throws IOException {
        poll(queue, asyncContext);
        asyncContext.complete();
      }
     
      @Override
      public void onComplete(AsyncEvent event) throws IOException {}
     
      @Override
      public void onError(AsyncEvent event) throws IOException {}
     
      @Override
      public void onStartAsync(AsyncEvent event) throws IOException {}
    });

    queue.setActivationCallback(new QueueActivationCallback() {
      @Override
      public void activate(MessageQueue queue) {
        try {
          poll(queue, asyncContext);
        }
View Full Code Here

   */
  public void event(final HttpEvent event) throws IOException, ServletException {
    final HttpServletRequest request = event.getHttpServletRequest();
    final QueueSession session = sessionProvider.getSession(request.getSession(), request.getHeader("RemoteQueueID"));

    MessageQueue queue;
    switch (event.getType()) {
      case BEGIN:
        boolean post = "POST".equals(request.getMethod());
        queue = getQueue(session, !post);
        if (queue == null) {
          switch (getConnectionPhase(request)) {
            case CONNECTING:
            case DISCONNECTING:
              return;
          }

          sendDisconnectWithReason(event.getHttpServletResponse().getOutputStream(),
              "There is no queue associated with this session.");
        }

        synchronized (activeEvents) {

          if (post) {
            // do not pause incoming messages.
            break;
          }
          else if (queue.messagesWaiting()) {
            transmitMessages(event.getHttpServletResponse(), queue);
            event.close();
            break;
          }

          if (!queueToSession.containsKey(queue)) {
            queueToSession.put(queue, session);
          }


          Set<HttpEvent> events = activeEvents.get(session);
          if (events == null) {
            activeEvents.put(session, events = new LinkedHashSet<HttpEvent>());
          }

          if (events.contains(event)) {
            event.close();
          }
          else {
            events.add(event);
          }
        }
        break;


      case END:
        if ((queue = getQueue(session, false)) != null) {
          queue.heartBeat();
        }

        synchronized (activeEvents) {
          Set<HttpEvent> evt = activeEvents.get(session);
          if (evt != null) {
            evt.remove(event);
          }
        }

        event.close();
        break;

      case EOF:
        event.close();
        break;

      case TIMEOUT:
      case ERROR:
        queue = getQueue(session, false);

        synchronized (activeEvents) {
          Set<HttpEvent> evt = activeEvents.get(session);
          if (evt != null) {
            evt.remove(event);
          }
        }

        if (event.getType() == HttpEvent.EventType.TIMEOUT) {
          if (queue != null) queue.heartBeat();
        }
        else {
          if (queue != null) {
            queueToSession.remove(queue);
            service.getBus().closeQueue(session.getSessionId());
View Full Code Here

    }
  }


  private MessageQueue getQueue(QueueSession session, boolean post) {
    MessageQueue queue = service.getBus().getQueue(session);

    if (post && queue != null && queue.getActivationCallback() == null) {
      queue.setActivationCallback(new QueueActivationCallback() {
        boolean resumed = false;

        public void activate(MessageQueue queue) {
          if (resumed) {
            return;
          }
          resumed = true;
          queue.setActivationCallback(null);

          try {
            Set<HttpEvent> activeSessEvents;
            QueueSession session;
            session = queueToSession.get(queue);
View Full Code Here

TOP

Related Classes of org.jboss.errai.bus.server.api.MessageQueue

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.