@Override public SubscriptionResponse subscribe(final String[] subscriptions, final String[] exclusions) { final Subscriber subscriber = new Subscriber(subscriptions, exclusions); this.subscribers.put(subscriber.getSubscriptionID(), subscriber); this.subscribersCleanupThread(); final SubscriptionResponse ret = new SubscriptionResponse(subscriber); ret.setSubscribed(true); return ret; }
public List<Long> publishEvent(final EventObject event, final List<Long> subscriptionids) { ArrayList<Subscriber> publishTo = new ArrayList<Subscriber>(); final ArrayList<Long> ret = new ArrayList<Long>(); if (subscriptionids != null && subscriptionids.size() > 0) { /* publish to given subscriptionids */ for (final long subscriptionid : subscriptionids) { final Subscriber subscriber = this.subscribers.get(subscriptionid); if (subscriber != null) { publishTo.add(subscriber); } } } else { /* publish to all subscribers */ publishTo = new ArrayList<Subscriber>(this.subscribers.values()); } for (final Subscriber subscriber : publishTo) { if (subscriber.isSubscribed(event)) { ret.add(subscriber.getSubscriptionID()); subscriber.push(event); subscriber.notifyListener(); } } return ret; }