/** * Construct a Topic using the Queue provided * @param q Queue to back this Topic with */ public Topic(final Queue<T> q) { factory = QueueFactories.unboundedQueue(); distributor.addQueue(q); } public Topic(final Queue<T> q,QueueFactory<T> factory) {
/** * @return Track changes in size in the Topic's data */ public Signal<Integer> getSizeSignal(final int index) { return this.distributor.getSubscribers() .getOrElse(index,null) .getSizeSignal(); }
/** * Topic will maintain a queue for each Subscribing Stream * If a Stream is finished with a Topic it is good practice to disconnect from the Topic * so messages will no longer be stored for that Stream * * @param stream */ @Synchronized("lock") public void disconnect(final ReactiveSeq<T> stream) { Option<Queue<T>> o = streamToQueue.get(stream); distributor.removeQueue(streamToQueue.getOrElse(stream, new Queue<>())); this.streamToQueue = streamToQueue.remove(stream); this.index--; }
private Queue<T> getNextQueue() { if (index >= this.distributor.getSubscribers() .size()) { this.distributor.addQueue(factory.build()); } return this.distributor.getSubscribers() .getOrElse(index++,null); }
public Topic(final Queue<T> q,QueueFactory<T> factory) { this.factory = factory; distributor.addQueue(q); }
public void setSizeSignal(final int index, final Signal<Integer> s) { this.distributor.getSubscribers() .getOrElse(index, null) .setSizeSignal(s); }
/** * Close this Topic * * @return true if closed */ @Override public boolean close() { this.distributor.getSubscribers() .forEach(it -> it.close()); return true; }
/** * Construct a new Topic */ public Topic() { final Queue<T> q = new Queue<T>(); factory = QueueFactories.unboundedQueue(); distributor.addQueue(q); }
/** * Topic will maintain a queue for each Subscribing Stream * If a Stream is finished with a Topic it is good practice to disconnect from the Topic * so messages will no longer be stored for that Stream * * @param stream */ @Synchronized("lock") public void disconnect(final ReactiveSeq<T> stream) { Option<Queue<T>> o = streamToQueue.get(stream); distributor.removeQueue(streamToQueue.getOrElse(stream, new Queue<>())); this.streamToQueue = streamToQueue.remove(stream); this.index--; }
/** * @return Track changes in size in the Topic's data */ public Signal<Integer> getSizeSignal(final int index) { return this.distributor.getSubscribers() .getOrElse(index,null) .getSizeSignal(); }
/** * Close this Topic * * @return true if closed */ @Override public boolean close() { this.distributor.getSubscribers() .forEach(it -> it.close()); return true; }
/** * Construct a Topic using the Queue provided * @param q Queue to back this Topic with */ public Topic(final Queue<T> q) { factory = QueueFactories.unboundedQueue(); distributor.addQueue(q); } public Topic(final Queue<T> q,QueueFactory<T> factory) {
public Topic(final Queue<T> q,QueueFactory<T> factory) { this.factory = factory; distributor.addQueue(q); }
/** * Construct a new Topic */ public Topic() { final Queue<T> q = new Queue<T>(); factory = QueueFactories.unboundedQueue(); distributor.addQueue(q); }
public void setSizeSignal(final int index, final Signal<Integer> s) { this.distributor.getSubscribers() .getOrElse(index, null) .setSizeSignal(s); }
private Queue<T> getNextQueue() { if (index >= this.distributor.getSubscribers() .size()) { this.distributor.addQueue(factory.build()); } return this.distributor.getSubscribers() .getOrElse(index++,null); }