/** * @see stream.io.Sink#write(stream.Data) */ @Override public boolean write(Data item) throws Exception { return enqueue(item); }
/** * @see stream.io.Stream#close() */ public void close() throws Exception { log.debug("Closing queue '{}'...", getId()); fullyLock(); try { if (closed.get()) { log.debug("Queue '{}' already closed.", getId()); return; } // log.debug("queue: {}", queue); closed.getAndSet(true); } finally { fullyUnlock(); } }
public Data take() { try { return read(); } catch (Exception e) { e.printStackTrace(); return null; } }
log.debug("Queue {}: Enqueuing event {}", getId(), item); try { if (item == null) enqueue(node); c = count.getAndIncrement(); if (c + 1 < capacity) signalNotEmpty(); return true; } catch (Exception e) {
log.debug("Reading from queue {}", getId()); Data item = null; int c = -1; try { if (closed.get() && count.get() == 0) { log.debug("Queue '{}' is closed and empty => null", getId()); return null; notEmpty.await(); item = dequeue(); c = count.getAndDecrement(); log.debug("took item from queue: {}", item); log.debug("Queue '{}' is closed and empty => null", getId()); return null; } else { signalNotFull(); return item;
/** * @see stream.io.Barrel#clear() */ @Override public int clear() { fullyLock(); int removed = count.get(); try { for (Node<Data> p, h = head; (p = h.next) != null; h = p) { h.next = h; p.item = null; } head = last; // assert head.item == null && head.next == null; if (count.getAndSet(0) == capacity) notFull.signal(); } finally { fullyUnlock(); } return removed; }
private boolean inject(SinkRef ref, ComputeGraph graph) throws Exception { log.debug("Injecting sink reference {}", ref); String[] refs = ref.ids(); Sink[] sinks = new Sink[refs.length]; for (int i = 0; i < sinks.length; i++) { sinks[i] = graph.sinks().get(refs[i]); if (sinks[i] == null) { Queue queue = new stream.io.BlockingQueue(); graph.addQueue(refs[i], queue); if (queue instanceof Service) { graph.addService(refs[i], (Service) queue); } log.debug("Creating implicitly defined queue: {}", queue); sinks[i] = queue; } } return injectResolvedReferences(ref.object(), ref.property(), sinks); }
/** * @see stream.io.Source#init() */ @Override public void init() throws Exception { if (getCapacity() < 1) { throw new IllegalArgumentException("Invalid queue-capacity '" + getCapacity() + "'!"); } }
log.trace("Queue {}: Enqueuing event {}", getId(), item); try { if (item == null) enqueue(node); c = count.getAndIncrement(); signalNotEmpty(); return true; } catch (Exception e) {
log.trace("Reading from queue {}", getId()); Data item = null; int c = -1; try { if (closed.get() && count.get() == 0) { log.debug("Queue '{}' is closed and empty => null", getId()); return null; notEmpty.await(); item = dequeue(); c = count.getAndDecrement(); log.debug("Queue '{}' is closed and empty => null", getId()); return null; } else { signalNotFull(); return item;
/** * @see stream.io.Barrel#clear() */ @Override public int clear() { fullyLock(); int removed = count.get(); try { for (Node<Data> p, h = head; (p = h.next) != null; h = p) { h.next = h; p.item = null; } head = last; // assert head.item == null && head.next == null; if (count.getAndSet(0) == capacity) notFull.signal(); } finally { fullyUnlock(); } return removed; }
private boolean inject(SourceRef ref, ComputeGraph graph) throws Exception { log.debug("Injecting source reference {}", ref); String[] refs = ref.ids(); Source[] sources = new Source[refs.length]; for (int i = 0; i < sources.length; i++) { sources[i] = graph.sources().get(refs[i]); // TODO Create Queue if (sources[i] == null) { Queue queue = new stream.io.BlockingQueue(); graph.addQueue(refs[i], queue); if (queue instanceof Service) { graph.addService(refs[i], (Service) queue); } log.info("Created new Queue: {}", queue); sources[i] = queue; } } return injectResolvedReferences(ref.object(), ref.property(), sources); }
@Override public boolean write(Collection<Data> data) throws Exception { log.debug("Queue {}: Enqueuing event {}", getId(), data); try { if (data == null) for (Data item : data) { Node<Data> node = new Node<Data>(item); enqueue(node); c = count.getAndIncrement(); signalNotEmpty(); return true; } catch (Exception e) {
/** * @see stream.io.Stream#close() */ public void close() throws Exception { log.debug("Closing queue '{}'...", getId()); fullyLock(); try { if (closed.get()) { log.debug("Queue '{}' already closed.", getId()); return; } // log.debug("queue: {}", queue); closed.getAndSet(true); } finally { fullyUnlock(); } }
public Data take() { try { return read(); } catch (Exception e) { e.printStackTrace(); return null; } }
/** * @see stream.io.Sink#write(stream.Data) */ @Override public boolean write(Data item) throws Exception { return enqueue(item); }
@Override public boolean write(Collection<Data> data) throws Exception { log.trace("Queue {}: Enqueuing event {}", getId(), data); try { if (data == null) for (Data item : data) { Node<Data> node = new Node<Data>(item); enqueue(node); c = count.getAndIncrement(); signalNotEmpty(); return true; } catch (Exception e) {