@Override public void prune() { if (_gate.enter()) { if (s_logger.isTraceEnabled()) { s_logger.trace("Enter gate in message bus prune"); } try { doPrune(); } finally { _gate.leave(); } } else { synchronized (_pendingActions) { _pendingActions.add(new ActionRecord(ActionType.Prune, null, null)); } } }
@Override public void clearAll() { if (_gate.enter()) { if (s_logger.isTraceEnabled()) { s_logger.trace("Enter gate in message bus clearAll"); } try { _subscriberRoot.clearAll(); doPrune(); } finally { _gate.leave(); } } else { synchronized (_pendingActions) { _pendingActions.add(new ActionRecord(ActionType.ClearAll, null, null)); } } }
@Override public void subscribe(String subject, MessageSubscriber subscriber) { assert (subject != null); assert (subscriber != null); if (_gate.enter()) { if (s_logger.isTraceEnabled()) { s_logger.trace("Enter gate in message bus subscribe"); } try { SubscriptionNode current = locate(subject, null, true); assert (current != null); current.addSubscriber(subscriber); } finally { _gate.leave(); } } else { synchronized (_pendingActions) { _pendingActions.add(new ActionRecord(ActionType.Subscribe, subject, subscriber)); } } }
@Override public void unsubscribe(String subject, MessageSubscriber subscriber) { if (_gate.enter()) { if (s_logger.isTraceEnabled()) { s_logger.trace("Enter gate in message bus unsubscribe"); } try { if (subject != null) { SubscriptionNode current = locate(subject, null, false); if (current != null) current.removeSubscriber(subscriber, false); } else { _subscriberRoot.removeSubscriber(subscriber, true); } } finally { _gate.leave(); } } else { synchronized (_pendingActions) { _pendingActions.add(new ActionRecord(ActionType.Unsubscribe, subject, subscriber)); } } }