/** * Is the {@link ErraiService} still active. * * @return true if we aren't null and we have a valid {@link ErraiService#getBus()}. */ public static boolean isActive() { return service != null && service.getBus() != null; }
@Inject public SimpleDispatcher(ErraiService svc) { this.bus = svc.getBus(); }
/** * Attempts to deliver the specified message globally * * @param m - message to be delivered */ public void deliverGlobal(Message m) throws InterruptedException { if (messages.offer(m, 30, java.util.concurrent.TimeUnit.SECONDS)) { return; } else { switch (saturationPolicy) { case CallerRuns: svc.getBus().sendGlobal(m); break; case Fail: sendDeliveryFailure(m); throw new RuntimeException("delivery queue is overloaded!"); } } }
/** * Attempts to send the message * * @param m - message to be sent */ public void deliver(Message m) throws InterruptedException { m.setFlag(RoutingFlag.NonGlobalRouting); if (messages.offer(m, 30, java.util.concurrent.TimeUnit.SECONDS)) { return; } else { switch (saturationPolicy) { case CallerRuns: svc.getBus().send(m); break; case Fail: sendDeliveryFailure(m); throw new RuntimeException("delivery queue is overloaded!"); } } }
public void closeProxy(ErraiService service) { this.service = service; messageBusProxy.closeProxy(service.getBus()); requestDispatcherProxy.closeProxy(service.getDispatcher()); } }
/** * Initializes the thread with the specified <tt>ThreadGroup</tt>, <tt>factory</tt> and service * * @param factory - the factory this worker thread will belong to * @param svc - the service the thread is attached to */ public Worker(WorkerFactory factory, ErraiService svc) { super("Dispatch Worker Thread"); this.timeout = factory.getWorkerTimeout(); this.messages = factory.getMessages(); this.bus = svc.getBus(); setPriority(Thread.MIN_PRIORITY); setDaemon(true); }
final MessageQueue queue = service.getBus().getQueue(session); if (queue == null) { switch (getConnectionPhase(httpServletRequest)) {
private void sendDeliveryFailure(Message m) { MessageDeliveryFailure mdf = new MessageDeliveryFailure("could not deliver message because the outgoing queue is full"); if (m.getErrorCallback() == null || m.getErrorCallback().error(m, mdf)) { ErrorHelper.sendClientError(svc.getBus(), m, mdf.getMessage(), mdf); throw mdf; } }
/** * Sends the message globally. If the <tt>PriorityProcessing</tt> routing flag is set, then the message is sent * globally on the bus. If not, the message is sent globally through the <tt>workerFactory</tt> * * @param message a message to dispatch globally */ public void dispatchGlobal(final Message message) throws InterruptedException { if (message.hasPart(MessageParts.PriorityProcessing)) { try { service.getBus().sendGlobal(message); } catch (Throwable t) { if (message.getErrorCallback() != null) { if (!message.getErrorCallback().error(message, t)) { return; } } else { t.printStackTrace(); } } } else { workerFactory.deliverGlobal(message); } }
final MessageQueue queue = service.getBus().getQueue(session); if (queue != null) { if (shouldWait(request)) {
final MessageQueue queue = service.getBus().getQueue(session);
/** * Is the {@link ErraiService} still active. * * @return true if we aren't null and we have a valid {@link ErraiService#getBus()}. */ public static boolean isActive() { return service != null && service.getBus() != null; }
if (sessionKey != null && (session = svc.getBus().getSessionBySessionId(sessionKey)) != null) { final LocalContext localContext = LocalContext.get(session); WEBSOCKET_ACTIVE.equals(localContext.getAttribute(String.class, SESSION_ATTR_WS_STATUS))) { final MessageQueue queueBySession = svc.getBus().getQueueBySession(sessionKey); queueBySession.setDeliveryHandler(DirectDeliveryHandler.createFor(new NettyQueueChannel(ctx.channel())));
@Inject public SimpleDispatcher(ErraiService svc) { this.bus = svc.getBus(); }
session.setAttribute("NoSSE", Boolean.TRUE); final MessageQueue queue = service.getBus().getQueue(session); if (queue == null) { switch (getConnectionPhase(request)) {
if (sessionKey != null && (session = service.getBus().getSessionBySessionId(sessionKey)) != null) { final LocalContext localCometSession = LocalContext.get(session); final MessageQueue queue = service.getBus().getQueueBySession(sessionKey); queue.setDeliveryHandler(DirectDeliveryHandler.createFor(queueChannel)); LOGGER.debug("set direct delivery handler on session: {}", session.getSessionId());
@Override protected void onSocketClosed(final WebSocket socket) throws IOException { QueueSession session = activeChannels.remove(socket); service.getBus().getQueue(session).setDeliveryHandlerToDefault(); }
public void closeProxy(ErraiService service) { this.service = service; messageBusProxy.closeProxy(service.getBus()); requestDispatcherProxy.closeProxy(service.getDispatcher()); } }
private void sendDeliveryFailure(Message m) { MessageDeliveryFailure mdf = new MessageDeliveryFailure("could not deliver message because the outgoing queue is full"); if (m.getErrorCallback() == null || m.getErrorCallback().error(m, mdf)) { ErrorHelper.sendClientError(svc.getBus(), m, mdf.getMessage(), mdf); throw mdf; } }