@Override public void activate(final MessageQueue queue) { try { queue.poll(new OutputStreamWriteAdapter(asyncContext.getResponse().getOutputStream())); queue.setActivationCallback(null); queue.heartBeat(); } catch (IOException e) { log.debug("Closing queue with id: " + queue.getSession().getSessionId() + " due to IOException", e); } catch (final Throwable t) { try { writeExceptionToOutputStream((HttpServletResponse) asyncContext.getResponse(), t); } catch (Throwable t2) { log.debug("Failed to write exception to dead client", t2); } } finally { asyncContext.complete(); } } });
@Override public void operationComplete(final ChannelFuture channelFuture) throws Exception { activeChannels.remove(ctx.channel()); queueBySession.setDeliveryHandlerToDefault(); } });
@Override public boolean deliver(final MessageQueue queue, final Message message) throws IOException { try { final Buffer buffer = queue.getBuffer(); final BufferColor bufferColor = queue.getBufferColor(); BufferHelper.encodeAndWrite(buffer, bufferColor, message); } finally { queue.incrementMessageCount(); queue.fireActivationCallback(); } return true; }
private void clearActivationCallback(final MessageQueue queue) { synchronized (queue.getActivationLock()) { queue.setActivationCallback(null); } } }
public static boolean pageIfStraddling(final MessageQueue queue) { if (queue.getDeliveryHandler() instanceof Pageable) { if (((nanoTime() - queue.getLastTransmissionTime()) > DOWNGRADE_THRESHOLD)) { ((Pageable) queue.getDeliveryHandler()).pageOut(queue); return true; } } return false; } }
queue.heartBeat(); queue.setTimeout(65000); synchronized (queue.getActivationLock()) { if (queue.messagesWaiting()) { try { queue.poll(new OutputStreamWriteAdapter(asyncContext.getResponse().getOutputStream())); asyncContext.complete(); queue.setActivationCallback(new QueueActivationCallback() { @Override public void activate(final MessageQueue queue) {
@Override public boolean copyFromBuffer(final MessageQueue queue, final ByteWriteAdapter toAdapter) throws IOException { final MarkedByteWriteAdapter markedOutputStream = new MarkedByteWriteAdapter(toAdapter); try { queue.getBuffer().read(markedOutputStream, queue.getBufferColor(), new MultiMessageFilter()); if (markedOutputStream.dataWasWritten() && markedOutputStream.getBytesWritten() > 2) { queue.resetMessageCount(); return true; } } catch (BufferOverflowException e) { queue.getBufferColor().getSequence().set(queue.getBuffer().getHeadSequence()); log.warn("buffer data was evicted for session " + queue.getSession().getSessionId() + " due to overflow condition. (consider increasing buffer size with errai.bus.buffer_size " + "in ErraiService.properties)"); } return false; }
public static boolean pageWaitingToDisk(final MessageQueue queue) { synchronized (queue.getPageLock()) { try { final boolean alreadyPaged = queue.isPaged(); final OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(getOrCreatePageFile(queue), alreadyPaged)); final ByteWriteAdapter writeAdapter = new OutputStreamWriteAdapter(outputStream); queue.getBuffer().read(writeAdapter, queue.getBufferColor()); outputStream.flush(); outputStream.close(); queue.setPaged(true); return alreadyPaged; } catch (IOException e) { throw new RuntimeException("paging error", e); } } }
queue.heartBeat(); synchronized (queue.getActivationLock()) { final Continuation cont = ContinuationSupport.getContinuation(httpServletRequest); if (!cont.isResumed() && !queue.messagesWaiting()) { queue.setActivationCallback(new JettyQueueActivationCallback(cont)); cont.setTimeout(30 * 1000); cont.suspend();
return; queue.heartBeat(); while (!queue.isStale()) { try { prepareSSEContinue(httpServletResponse); queue.poll(TimeUnit.MILLISECONDS, getSSETimeout(), new OutputStreamWriteAdapter(outputStream)); outputStream.write(SSE_TERMINATION_BYTES); outputStream.flush(); queue.heartBeat(); queue.poll(TimeUnit.MILLISECONDS, getLongPollTimeout(), new OutputStreamWriteAdapter(outputStream)); queue.poll(new OutputStreamWriteAdapter(outputStream));
private static boolean pollQueue(final MessageQueue queue, final OutputStream stream, final HttpServletResponse httpServletResponse) throws IOException { if (queue == null) return false; queue.heartBeat(); httpServletResponse.setHeader("Cache-Control", "no-cache"); httpServletResponse.setHeader("Pragma", "no-cache"); httpServletResponse.setHeader("Expires", "-1"); httpServletResponse.setContentType("application/json"); return queue.poll(new OutputStreamWriteAdapter(stream)); }
MessageQueue q; while (iter.hasNext()) { if ((q = iter.next()).isStale()) { iter.remove(); endSessions.add(q); ServerMessageBusImpl.this.remoteUnsubscribe(ref.getSession(), ref, subject); ref.getSession().endSession(); deferredQueue.remove(ref); ref.discard();
@Override public void noop(final MessageQueue queue) throws IOException { BufferHelper.encodeAndWriteNoop(queue.getBuffer(), queue.getBufferColor()); }
queue.poll(new OutputStreamWriteAdapter(response.getOutputStream()));
final long seq = q.getCurrentBufferSequenceNumber(); if (lowTail == -1) { lowTail = highTail = seq;
queue.heartBeat(); queue.setTimeout(65000); synchronized (queue.getActivationLock()) { if (queue.messagesWaiting()) { try { queue.poll(new OutputStreamWriteAdapter(asyncContext.getResponse().getOutputStream())); asyncContext.complete(); queue.setActivationCallback(new QueueActivationCallback() { @Override public void activate(final MessageQueue queue) {
@Override public boolean copyFromBuffer(TimeUnit timeUnit, int timeout, MessageQueue queue, ByteWriteAdapter toAdapter) throws IOException { final MarkedByteWriteAdapter markedOutputStream = new MarkedByteWriteAdapter(toAdapter); try { queue.getBuffer().readWait(timeUnit, timeout, markedOutputStream, queue.getBufferColor(), new MultiMessageFilter()); if (markedOutputStream.dataWasWritten() && markedOutputStream.getBytesWritten() > 2) { queue.resetMessageCount(); return true; } } catch (BufferOverflowException e) { queue.getBufferColor().getSequence().set(queue.getBuffer().getHeadSequence()); log.warn("buffer data was evicted for session " + queue.getSession().getSessionId() + " due to overflow condition. (consider increasing buffer size with errai.bus.buffer_size " + "in ErraiService.properties)"); } catch (InterruptedException e) { e.printStackTrace(); } return false; } }
public static boolean pageWaitingToDisk(final MessageQueue queue) { synchronized (queue.getPageLock()) { try { final boolean alreadyPaged = queue.isPaged(); final OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(getOrCreatePageFile(queue), alreadyPaged)); final ByteWriteAdapter writeAdapter = new OutputStreamWriteAdapter(outputStream); queue.getBuffer().read(writeAdapter, queue.getBufferColor()); outputStream.flush(); outputStream.close(); queue.setPaged(true); return alreadyPaged; } catch (IOException e) { throw new RuntimeException("paging error", e); } } }
queue.heartBeat(); synchronized (queue.getActivationLock()) { final Continuation cont = ContinuationSupport.getContinuation(httpServletRequest); if (!cont.isResumed() && !queue.messagesWaiting()) { queue.setActivationCallback(new JettyQueueActivationCallback(cont)); cont.setTimeout(30 * 1000); cont.suspend();
return; queue.heartBeat(); while (!queue.isStale()) { try { prepareSSEContinue(httpServletResponse); queue.poll(TimeUnit.MILLISECONDS, getSSETimeout(), new OutputStreamWriteAdapter(outputStream)); outputStream.write(SSE_TERMINATION_BYTES); outputStream.flush(); queue.heartBeat(); queue.poll(TimeUnit.MILLISECONDS, getLongPollTimeout(), new OutputStreamWriteAdapter(outputStream)); queue.poll(new OutputStreamWriteAdapter(outputStream));