@Override public SubscriptionResponse changesubscriptiontimeouts( final long subscriptionid, final long polltimeout, final long maxkeepalive) { final Subscriber subscriber = this.subscribers.get(subscriptionid); if (subscriber == null) { return new SubscriptionResponse(); } else { subscriber.setMaxKeepalive(maxkeepalive); subscriber.setPollTimeout(polltimeout); subscriber.notifyListener(); final SubscriptionResponse ret = new SubscriptionResponse(subscriber); ret.setSubscribed(true); return ret; } }
@Override public SubscriptionResponse unsubscribe(final long subscriptionid) { final Subscriber subscriber = this.subscribers.remove(subscriptionid); if (subscriber != null) { subscriber.notifyListener(); try { for (final EventPublisher publisher : this.publishers) { publisher.terminatedSubscription(this, subscriptionid); } } catch (final Throwable e) { e.printStackTrace(); } return new SubscriptionResponse(subscriber); } return new SubscriptionResponse(); }
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; }