@Override public void onUnsubscribe(final SubscriptionEvent event) { final String subject = event.getSubject(); if (subject.endsWith(":RespondTo:RPC") || subject.endsWith(":Errors:RPC")) { return; } encodeAndTransmit(CommandMessage.create() .toSubject(BuiltInServices.ServerBus.name()).command(RemoteUnsubscribe) .set(Subject, subject).set(PriorityProcessing, "1")); } });
@Override public void onSubscribe(final SubscriptionEvent event) { final String subject = event.getSubject(); if (event.isLocalOnly() || subject.startsWith("local:") || remotes.containsKey(subject)) { return; } if (subject.endsWith(":RespondTo:RPC") || subject.endsWith(":Errors:RPC")) { return; } if (event.isNew()) { encodeAndTransmit(CommandMessage.create() .toSubject(BuiltInServices.ServerBus.name()).command(RemoteSubscribe) .set(Subject, subject).set(PriorityProcessing, "1")); } } });
private void stop(final boolean sendDisconnect, final TransportError reason) { logger.info("stopping bus ..."); if (initialConnectTimer != null) { initialConnectTimer.cancel(); } if (degradeToUnitialized()) { setState(BusState.UNINITIALIZED); deferredMessages.clear(); remotes.clear(); deferredSubscriptions.clear(); } else if (state != BusState.LOCAL_ONLY) { setState(BusState.LOCAL_ONLY, reason); } // Optionally tell the server we're going away (this causes two POST requests) if (sendDisconnect && isRemoteCommunicationEnabled()) { encodeAndTransmit(CommandMessage.create() .toSubject(BuiltInServices.ServerBus.name()).command(BusCommand.Disconnect) .set(MessageParts.PriorityProcessing, "1")); } deferredMessages.addAll(transportHandler.stop(true)); }
@Override public void handleProtocolExtension(final Message message) { switch (BusCommand.valueOf(message.getCommandType())) { case WebsocketChannelVerify: logger.info("received verification token for websocket connection"); longPollingTransport .transmit(Collections.singletonList(CommandMessage.create() .toSubject(BuiltInServices.ServerBus.name()).command(BusCommand.WebsocketChannelVerify) .copy(MessageParts.WebSocketToken, message))); break; case WebsocketChannelOpen: if (messageBus.getState() == BusState.CONNECTION_INTERRUPTED) messageBus.setState(BusState.CONNECTED); // send final message to open the channel transmitToSocket(webSocketChannel, getWebSocketNegotiationString()); longPollingTransport.stop(false); webSocketToken = message.get(String.class, MessageParts.WebSocketToken); logger.info("web socket channel successfully negotiated. comet channel deactivated. (reconnect token: " + webSocketToken + ")"); retries = 0; break; case WebsocketNegotiationFailed: hosed = true; unsupportedReason = "Negotiation Failed (Bad Key)"; disconnectSocket(webSocketChannel); webSocketChannel = null; messageBus.reconsiderTransport(); break; } }
.toSubject(BuiltInServices.ServerBus.name()).command(BusCommand.RemoteSubscribe) .set(PriorityProcessing, "1") .set(MessageParts.RemoteServices, getAdvertisableSubjects()));
@Override public void onUnsubscribe(final SubscriptionEvent event) { final String subject = event.getSubject(); if (subject.endsWith(":RespondTo:RPC") || subject.endsWith(":Errors:RPC")) { return; } encodeAndTransmit(CommandMessage.create() .toSubject(BuiltInServices.ServerBus.name()).command(RemoteUnsubscribe) .set(Subject, subject).set(PriorityProcessing, "1")); } });
@Override public void onSubscribe(final SubscriptionEvent event) { final String subject = event.getSubject(); if (event.isLocalOnly() || subject.startsWith("local:") || remotes.containsKey(subject)) { return; } if (subject.endsWith(":RespondTo:RPC") || subject.endsWith(":Errors:RPC")) { return; } if (event.isNew()) { encodeAndTransmit(CommandMessage.create() .toSubject(BuiltInServices.ServerBus.name()).command(RemoteSubscribe) .set(Subject, subject).set(PriorityProcessing, "1")); } } });
private void stop(final boolean sendDisconnect, final TransportError reason) { logger.info("stopping bus ..."); if (initialConnectTimer != null) { initialConnectTimer.cancel(); } if (degradeToUnitialized()) { setState(BusState.UNINITIALIZED); deferredMessages.clear(); remotes.clear(); deferredSubscriptions.clear(); } else if (state != BusState.LOCAL_ONLY) { setState(BusState.LOCAL_ONLY, reason); } // Optionally tell the server we're going away (this causes two POST requests) if (sendDisconnect && isRemoteCommunicationEnabled()) { encodeAndTransmit(CommandMessage.create() .toSubject(BuiltInServices.ServerBus.name()).command(BusCommand.Disconnect) .set(MessageParts.PriorityProcessing, "1")); } deferredMessages.addAll(transportHandler.stop(true)); }
@Override public void handleProtocolExtension(final Message message) { switch (BusCommand.valueOf(message.getCommandType())) { case WebsocketChannelVerify: logger.info("received verification token for websocket connection"); longPollingTransport .transmit(Collections.singletonList(CommandMessage.create() .toSubject(BuiltInServices.ServerBus.name()).command(BusCommand.WebsocketChannelVerify) .copy(MessageParts.WebSocketToken, message))); break; case WebsocketChannelOpen: if (messageBus.getState() == BusState.CONNECTION_INTERRUPTED) messageBus.setState(BusState.CONNECTED); // send final message to open the channel transmitToSocket(webSocketChannel, getWebSocketNegotiationString()); longPollingTransport.stop(false); webSocketToken = message.get(String.class, MessageParts.WebSocketToken); logger.info("web socket channel successfully negotiated. comet channel deactivated. (reconnect token: " + webSocketToken + ")"); retries = 0; break; case WebsocketNegotiationFailed: hosed = true; unsupportedReason = "Negotiation Failed (Bad Key)"; disconnectSocket(webSocketChannel); webSocketChannel = null; messageBus.reconsiderTransport(); break; } }
.toSubject(BuiltInServices.ServerBus.name()).command(BusCommand.RemoteSubscribe) .set(PriorityProcessing, "1") .set(MessageParts.RemoteServices, getAdvertisableSubjects()));