Ejemplo n.º 1
0
 /* ------------------------------------------------------------ */
 public MessageImpl newMessage(Message associated) {
   MessageImpl message = _messagePool.poll();
   if (message == null) message = new MessageImpl(this);
   message.incRef();
   if (associated != null) message.setAssociated(associated);
   return message;
 }
Ejemplo n.º 2
0
  /* ------------------------------------------------------------ */
  protected void doDelivery(Client from, final Message msg) {
    final Message message = _bayeux.extendSendClient(from, this, msg);
    if (message == null) return;

    MessageListener[] alisteners = null;
    synchronized (this) {
      if (_maxQueue < 0) {
        // No queue limit, so always queue the message
        ((MessageImpl) message).incRef();
        _queue.addUnsafe(message);
      } else {
        // We have a queue limit,
        boolean queue;
        if (_queue.size() >= _maxQueue) {
          // We are over the limit, so consult listeners
          if (_qListeners != null && _qListeners.length > 0) {
            queue = true;
            for (QueueListener l : _qListeners) queue &= l.queueMaxed(from, this, message);
          } else queue = false;
        } else
          // we are under limit, so queue the messages.
          queue = true;

        // queue the message if we are meant to
        if (queue) {
          ((MessageImpl) message).incRef();
          _queue.addUnsafe(message);
        }
      }

      // deliver synchronized
      if (_syncMListeners != null)
        for (MessageListener l : _syncMListeners) l.deliver(from, this, message);
      alisteners = _asyncMListeners;

      if (_batch == 0 && _responsesPending < 1 && _queue.size() > 0) {
        if (((MessageImpl) message).isLazy()) lazyResume();
        else resume();
      }
    }

    // deliver unsynchronized
    if (alisteners != null) for (MessageListener l : alisteners) l.deliver(from, this, message);
  }
Ejemplo n.º 3
0
 /* ------------------------------------------------------------ */
 public MessageImpl newMessage() {
   MessageImpl message = _messagePool.poll();
   if (message == null) message = new MessageImpl(this);
   message.incRef();
   return message;
 }