/** * Unsubscribe all subscriptions attached to <tt>subject</tt> * * @param subject * - the subject to unsubscribe from */ @Override public void unsubscribeAll(final String subject) { if (reservedNames.contains(subject)) throw new IllegalArgumentException("Attempt to modify lockdown service: " + subject); subscriptions.remove(subject); globalSubscriptions.remove(subject); fireUnsubscribeListeners(new SubscriptionEvent(false, null, 0, false, subject)); }
/** * Fire listeners to notify that a subscription has been unregistered from the * bus * * @param subject * - subscription unregistered */ private void fireAllUnSubscribeListeners(final String subject) { final Iterator<UnsubscribeListener> iterator = onUnsubscribeHooks.iterator(); final SubscriptionEvent evt = new SubscriptionEvent(false, "InBrowser", 0, false, subject); while (iterator.hasNext()) { iterator.next().onUnsubscribe(evt); if (evt.isDisposeListener()) { iterator.remove(); evt.setDisposeListener(false); } } }
private DeliveryPlan removeFromDeliveryPlan(final String subject, final MessageCallback receiver) { final DeliveryPlan plan = subscriptions.get(subject); if (plan != null) { subscriptions.put(subject, plan.newDeliveryPlanWithOut(receiver)); fireUnsubscribeListeners( new SubscriptionEvent(false, "InBus", plan.getTotalReceivers(), false, subject)); } return plan; }
@Override public Subscription subscribeLocal(final String subject, final MessageCallback receiver) { if (reservedNames.contains(subject)) throw new IllegalArgumentException("cannot modify or subscribe to reserved service: " + subject); final String toSubscribe = "local:".concat(subject); final DeliveryPlan plan = createOrAddDeliveryPlan(toSubscribe, receiver); fireSubscribeListeners( new SubscriptionEvent(false, false, true, true, plan.getTotalReceivers(), "InBus", toSubscribe) ); return new LocalSubscriptionHandle(toSubscribe, receiver); }
/** * Fire listeners to notify that a new subscription has been registered on the * bus. * * @param subject * - new subscription registered * @param local * - * @param isNew * - */ private void fireAllSubscribeListeners(final String subject, final boolean local, final boolean isNew) { final Iterator<SubscribeListener> iterator = onSubscribeHooks.iterator(); final SubscriptionEvent evt = new SubscriptionEvent(false, false, local, isNew, 1, "InBrowser", subject); while (iterator.hasNext()) { iterator.next().onSubscribe(evt); if (evt.isDisposeListener()) { iterator.remove(); evt.setDisposeListener(false); } } }
/** * Adds a subscription * * @param subject * - the subject to subscribe to * @param receiver * - the callback function called when a message is dispatched */ @Override public Subscription subscribe(final String subject, final MessageCallback receiver) { if (reservedNames.contains(subject)) throw new IllegalArgumentException("cannot modify or subscribe to reserved service: " + subject); final DeliveryPlan plan = createOrAddDeliveryPlan(subject, receiver); globalSubscriptions.add(subject); fireSubscribeListeners(new SubscriptionEvent(false, null, plan.getTotalReceivers(), true, subject)); return new SubscriptionHandle(subject, receiver, plan); }
@Override public void attachMonitor(final BusMonitor monitor) { if (this.busMonitor != null) { log.warn("new monitor attached, but a monitor was already attached: old monitor has been detached."); } this.busMonitor = monitor; for (final Map.Entry<QueueSession, MessageQueue> entry : messageQueues.entrySet()) { busMonitor.notifyQueueAttached(entry.getKey().getSessionId(), entry.getValue()); } for (final String subject : subscriptions.keySet()) { busMonitor.notifyNewSubscriptionEvent(new SubscriptionEvent(false, "None", 1, false, subject)); } for (final Map.Entry<String, RemoteMessageCallback> entry : remoteSubscriptions.entrySet()) { for (final MessageQueue queue : entry.getValue().getQueues()) { busMonitor.notifyNewSubscriptionEvent( new SubscriptionEvent(true, queue.getSession().getSessionId(), 1, false, entry.getKey()) ); } } monitor.attach(this); }
/** * Unsubscribes a remote subscription and fires the appropriate listeners * * @param sessionContext * - session context of queue * @param queue * - the message queue * @param subject * - the subject to unsubscribe from */ public void remoteUnsubscribe(final QueueSession sessionContext, final MessageQueue queue, final String subject) { if (!remoteSubscriptions.containsKey(subject)) { return; } final RemoteMessageCallback rmc = remoteSubscriptions.get(subject); rmc.removeQueue(queue); try { fireUnsubscribeListeners(new SubscriptionEvent(true, rmc.getQueueCount() == 0, false, false, rmc.getQueueCount(), sessionContext.getSessionId(), subject)); } catch (Exception e) { e.printStackTrace(); } }
new SubscriptionEvent(true, sessionContext.getSessionId(), rmc.getQueueCount(), isNew, subject) );
/** * Unsubscribe all subscriptions attached to <tt>subject</tt> * * @param subject * - the subject to unsubscribe from */ @Override public void unsubscribeAll(final String subject) { if (reservedNames.contains(subject)) throw new IllegalArgumentException("Attempt to modify lockdown service: " + subject); subscriptions.remove(subject); globalSubscriptions.remove(subject); fireUnsubscribeListeners(new SubscriptionEvent(false, null, 0, false, subject)); }
private DeliveryPlan removeFromDeliveryPlan(final String subject, final MessageCallback receiver) { final DeliveryPlan plan = subscriptions.get(subject); if (plan != null) { subscriptions.put(subject, plan.newDeliveryPlanWithOut(receiver)); fireUnsubscribeListeners( new SubscriptionEvent(false, "InBus", plan.getTotalReceivers(), false, subject)); } return plan; }
/** * Fire listeners to notify that a subscription has been unregistered from the * bus * * @param subject * - subscription unregistered */ private void fireAllUnSubscribeListeners(final String subject) { final Iterator<UnsubscribeListener> iterator = onUnsubscribeHooks.iterator(); final SubscriptionEvent evt = new SubscriptionEvent(false, "InBrowser", 0, false, subject); while (iterator.hasNext()) { iterator.next().onUnsubscribe(evt); if (evt.isDisposeListener()) { iterator.remove(); evt.setDisposeListener(false); } } }
@Override public Subscription subscribeLocal(final String subject, final MessageCallback receiver) { if (reservedNames.contains(subject)) throw new IllegalArgumentException("cannot modify or subscribe to reserved service: " + subject); final String toSubscribe = "local:".concat(subject); final DeliveryPlan plan = createOrAddDeliveryPlan(toSubscribe, receiver); fireSubscribeListeners( new SubscriptionEvent(false, false, true, true, plan.getTotalReceivers(), "InBus", toSubscribe) ); return new LocalSubscriptionHandle(toSubscribe, receiver); }
/** * Fire listeners to notify that a new subscription has been registered on the * bus. * * @param subject * - new subscription registered * @param local * - * @param isNew * - */ private void fireAllSubscribeListeners(final String subject, final boolean local, final boolean isNew) { final Iterator<SubscribeListener> iterator = onSubscribeHooks.iterator(); final SubscriptionEvent evt = new SubscriptionEvent(false, false, local, isNew, 1, "InBrowser", subject); while (iterator.hasNext()) { iterator.next().onSubscribe(evt); if (evt.isDisposeListener()) { iterator.remove(); evt.setDisposeListener(false); } } }
/** * Adds a subscription * * @param subject * - the subject to subscribe to * @param receiver * - the callback function called when a message is dispatched */ @Override public Subscription subscribe(final String subject, final MessageCallback receiver) { if (reservedNames.contains(subject)) throw new IllegalArgumentException("cannot modify or subscribe to reserved service: " + subject); final DeliveryPlan plan = createOrAddDeliveryPlan(subject, receiver); globalSubscriptions.add(subject); fireSubscribeListeners(new SubscriptionEvent(false, null, plan.getTotalReceivers(), true, subject)); return new SubscriptionHandle(subject, receiver, plan); }
@Override public void attachMonitor(final BusMonitor monitor) { if (this.busMonitor != null) { log.warn("new monitor attached, but a monitor was already attached: old monitor has been detached."); } this.busMonitor = monitor; for (final Map.Entry<QueueSession, MessageQueue> entry : messageQueues.entrySet()) { busMonitor.notifyQueueAttached(entry.getKey().getSessionId(), entry.getValue()); } for (final String subject : subscriptions.keySet()) { busMonitor.notifyNewSubscriptionEvent(new SubscriptionEvent(false, "None", 1, false, subject)); } for (final Map.Entry<String, RemoteMessageCallback> entry : remoteSubscriptions.entrySet()) { for (final MessageQueue queue : entry.getValue().getQueues()) { busMonitor.notifyNewSubscriptionEvent( new SubscriptionEvent(true, queue.getSession().getSessionId(), 1, false, entry.getKey()) ); } } monitor.attach(this); }
/** * Unsubscribes a remote subscription and fires the appropriate listeners * * @param sessionContext * - session context of queue * @param queue * - the message queue * @param subject * - the subject to unsubscribe from */ public void remoteUnsubscribe(final QueueSession sessionContext, final MessageQueue queue, final String subject) { if (!remoteSubscriptions.containsKey(subject)) { return; } final RemoteMessageCallback rmc = remoteSubscriptions.get(subject); rmc.removeQueue(queue); try { fireUnsubscribeListeners(new SubscriptionEvent(true, rmc.getQueueCount() == 0, false, false, rmc.getQueueCount(), sessionContext.getSessionId(), subject)); } catch (Exception e) { e.printStackTrace(); } }
new SubscriptionEvent(true, sessionContext.getSessionId(), rmc.getQueueCount(), isNew, subject) );