private void timestamp(Mutable message) { SimpleDateFormat formatter = new SimpleDateFormat(format); formatter.setTimeZone(timezone); message.put(Message.TIMESTAMP_FIELD, formatter.format(System.currentTimeMillis())); } }
private boolean writeHandshakeReply(ServletOutputStream output) throws IOException { List<ServerMessage.Mutable> replies = context.replies; if (replies.size() > 0) { ServerMessage.Mutable reply = replies.get(0); if (Channel.META_HANDSHAKE.equals(reply.getChannel())) { if (allowMessageDeliveryDuringHandshake(context.session) && !messages.isEmpty()) { reply.put("x-messages", messages.size()); } getBayeux().freeze(reply); output.write(toJSONBytes(reply, "UTF-8")); needsComma = true; ++replyIndex; } } return output.isReady(); }
protected void resume(Context context, ServerMessage.Mutable message, Promise<Void> promise) { if (_logger.isDebugEnabled()) { _logger.debug("Resumed {}", message); } ServerMessage.Mutable reply = message.getAssociated(); ServerSessionImpl session = context.session; if (session != null) { Map<String, Object> advice = session.takeAdvice(this); if (advice != null) { reply.put(Message.ADVICE_FIELD, advice); } if (session.isDisconnected()) { reply.getAdvice(true).put(Message.RECONNECT_FIELD, Message.RECONNECT_NONE_VALUE); } } processReply(session, reply, Promise.from(r -> { if (r != null) { context.replies.add(r); } context.sendQueue = true; context.scheduleExpiration = true; promise.succeed(null); }, promise::fail)); }
if (Channel.META_HANDSHAKE.equals(reply.getChannel())) { if (allowMessageDeliveryDuringHandshake(session) && !messages.isEmpty()) { reply.put("x-messages", messages.size());
promise.succeed(false); } else { reply.put(Message.SUBSCRIPTION_FIELD, subscriptionField); AsyncFoldLeft.run(subscriptions, true, (result, subscription, loop) -> { ServerChannelImpl channel = getServerChannel(subscription);
promise.succeed(false); } else { reply.put(Message.SUBSCRIPTION_FIELD, subscriptionField); AsyncFoldLeft.run(subscriptions, true, (result, subscription, loop) -> { ServerChannelImpl channel = getServerChannel(subscription);
private void handleMetaConnect(ServerSessionImpl session, Mutable message, Promise<Boolean> promise) { ServerMessage.Mutable reply = message.getAssociated(); if (session.connected()) { reply.setSuccessful(true); Map<String, Object> adviceIn = message.getAdvice(); if (adviceIn != null) { Number timeout = (Number)adviceIn.get("timeout"); session.updateTransientTimeout(timeout == null ? -1L : timeout.longValue()); Number interval = (Number)adviceIn.get("interval"); session.updateTransientInterval(interval == null ? -1L : interval.longValue()); // Force the server to send the advice, as the client may // have forgotten it (for example because of a reload) session.reAdvise(); } else { session.updateTransientTimeout(-1); session.updateTransientInterval(-1); } Map<String, Object> adviceOut = session.takeAdvice(message.getServerTransport()); if (adviceOut != null) { reply.put(Message.ADVICE_FIELD, adviceOut); } promise.succeed(true); } else { unknownSession(reply); promise.succeed(false); } }
private void handleMetaHandshake2(ServerSessionImpl session, Mutable message, Promise<Boolean> promise) { ServerMessage.Mutable reply = message.getAssociated(); if (session.handshake(message)) { addServerSession(session, message); reply.setSuccessful(true); reply.setClientId(session.getId()); reply.put(Message.VERSION_FIELD, "1.0"); reply.put(Message.MIN_VERSION_FIELD, "1.0"); reply.put(Message.SUPPORTED_CONNECTION_TYPES_FIELD, getAllowedTransports()); Map<String, Object> adviceOut = session.takeAdvice(message.getServerTransport()); reply.put(Message.ADVICE_FIELD, adviceOut); promise.succeed(true); } else { error(reply, "403::handshake_failed"); promise.succeed(false); } }
private void messageFailure(ServerMessage message, Throwable cause) { ServerMessage.Mutable failed = newMessage(); failed.setId(message.getId()); failed.setSuccessful(false); failed.setChannel(message.getChannel()); if (message.containsKey(Message.SUBSCRIPTION_FIELD)) { failed.put(Message.SUBSCRIPTION_FIELD, message.get(Message.SUBSCRIPTION_FIELD)); } Map<String, Object> failure = new HashMap<>(); failed.put("failure", failure); failure.put("message", message); failure.put("exception", cause); receive(failed, Promise.noop()); }
public ServerMessage.Mutable getReply() { Map<String, Object> advice = _session.takeAdvice(); if (advice != null) _reply.put(Message.ADVICE_FIELD, advice); return _reply; }
protected void error(ServerMessage.Mutable reply, String error) { if (reply != null) { reply.put(Message.ERROR_FIELD, error); reply.setSuccessful(false); } }