/* * Copyright (C) 2013 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jboss.errai.bus.client.api; import java.util.Set; import org.jboss.errai.bus.client.api.messaging.Message; import org.jboss.errai.bus.client.api.messaging.MessageBus; import org.jboss.errai.bus.client.api.messaging.MessageCallback; /** * An extended client-specific/in-browser interface of {@link org.jboss.errai.bus.client.api.messaging.MessageBus}, which defines client-specific functionality. * * @author Mike Brock */ public interface ClientMessageBus extends MessageBus { /** * Declares a new shadow subscription. Shadow subscriptions are specialized services * that are responsible for handling the request of remote services when the bus * is in a disconnected state. * <p> * When a message is sent by an application component to a remote service while the * bus is physically disconnected from the server, the bus will consider shadow * subscriptions with a matching subject name to deliver the message to. * <p> * Shadow subscriptions are considered routable in all bus states except * <tt>CONNECTING</tt>. * * @param subject the subject name. * @param callback * @return */ public Subscription subscribeShadow(String subject, MessageCallback callback); /** * Adds the given listener instance to this bus. The listener will be notified * each time the bus transitions to a different lifecycle state. * * @param l * The listener that wants to receive lifecycle notifications. Must * not be null. If the same listener is added more than once, it will * receive the corresponding number of callbacks upon each lifecycle * event. */ public void addLifecycleListener(BusLifecycleListener l); /** * Removes the given listener from this bus. The listener will no longer * receive lifecycle events from this bus. * * @param l * The listener to remove. If the listener was added more than one * time, removing it will decrease by one the number of notifications * that listener receices for each event. If the listener was not * already registered to receive events, this method has no effect. */ public void removeLifecycleListener(BusLifecycleListener l); /** * Takes this bus out of the "local only" state, causing it to try and connect * with the server (unless remote communication is globally disabled). * * @see org.jboss.errai.bus.client.util.BusToolsCli#isRemoteCommunicationEnabled() */ public void init(); /** * Takes this bus into the "local only" state. * * @param sendDisconnectToServer * if true, the server will be notified that we are breaking the * connection. Else, no attempt will be made to notify the server. */ public void stop(boolean sendDisconnectToServer); /** * Returns a set of all reject subjects in the bus. * * @return * a set of all registered subjects. */ public Set<String> getAllRegisteredSubjects(); /** * Adds a global transport error handler to deal with any errors which arise * from communication between the bus and the server. * * @param errorHandler * the error handler to add. */ public void addTransportErrorHandler(TransportErrorHandler errorHandler); /** * Removes the given global transport error handler from this bus. Once * removed, the given handler does not receive transport error notifications * anymore. * * @param errorHandler * the error handler to remove. This method has no effect if the * given handler is {@code null} or it was not already registered. */ public void removeTransportErrorHandler(TransportErrorHandler errorHandler); /** * Sets a property on the bus. * * @param name * the property name * @param value * the property value */ public void setProperty(String name, String value); public void clearProperties(); /** * Delivers the given message to all local callbacks that subscribe to its * subject. Does not transmit the message to other buses. * * @param message * The message to deliver to local subscribers. */ public void sendLocal(Message message); String getSessionId(); String getClientId(); }