org.eclipse.emf.cdo.session.remote

## Interface CDORemoteSessionManager

- All Superinterfaces:
    IContainer<CDORemoteSession>, INotifier
  All Known Subinterfaces:
    InternalCDORemoteSessionManager

      public interface CDORemoteSessionManager
      extends IContainer<CDORemoteSession>

  Provides collaborative access to the `remote sessions` that are connected to the same repository as the `local session`. A CDORemoteSessionManager can be subscribed or unsubscribed to changes in the set of remote sessions. It is subscribed if at least one is true:
  1. At least one `listener` is registered with this remote session manager.
  2. `Force subscription` is `true`.
  If this remote session manager is subscribed it eventually fires the following `events` to `registered` listeners:
  - `IContainerEvent` with `CDORemoteSession` as generic type argument to reflect opened or closed remote sessions.
  - `CDORemoteSessionEvent.SubscriptionChanged` to reflect the ability of the remote session to receive and possibly handle remote messages from other sessions.
  - `CDORemoteSessionEvent.MessageReceived` to deliver custom data `sent` from other sessions .
  Since:
    2.0
  Author:
    Eike Stepper
  No Implement
    This interface is not intended to be implemented by clients.
  No Extend
    This interface is not intended to be extended by clients.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `CDORemoteSessionManager.EventAdapter` A default adapter for all kinds of `remote session` related events.
    `static interface` | `CDORemoteSessionManager.LocalSubscriptionChangedEvent` An `event` that is fired by a `remote session manager` after the `subscription mode` of the `local session` changed.

    - ### Nested classes/interfaces inherited from interface org.eclipse.net4j.util.container.IContainer

      `IContainer.Modifiable<E>, IContainer.Persistable<E>, IContainer.Persistence<E>`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `CDOSession` | `getLocalSession()` Returns the `local session` this CDORemoteSessionManager belongs to.
    `CDORemoteSession[]` | `getRemoteSessions()` Returns the set of `remote sessions` that are connected to the same repository as the `local session`.
    `boolean` | `isForceSubscription()` Returns `true` if this CDORemoteSessionManager shall be subscribed to changes in the set of remote sessions and delivers `custom data events` even if no `listener` is registered, `false` otherwise.
    `boolean` | `isSubscribed()` Returns `true` if this CDORemoteSessionManager is subscribed to changes in the set of remote sessions and delivers `custom data events`, `false` otherwise.
    `java.util.Set<CDORemoteSession>` | `sendMessage(CDORemoteSessionMessage message, CDORemoteSession... recipients)` Sends a multicast message to the subscribed recipients.
    `java.util.Set<CDORemoteSession>` | `sendMessage(CDORemoteSessionMessage message, java.util.Collection<CDORemoteSession> recipients)` Same as `sendMessage(CDORemoteSessionMessage, CDORemoteSession...)` but with a recipients `collection`.
    `void` | `setForceSubscription(boolean forceSubscription)` Enables or disables subscription to changes in the set of remote sessions even if no `listener` is registered.

    - ### Methods inherited from interface org.eclipse.net4j.util.container.IContainer

      `getElements, isEmpty`

    - ### Methods inherited from interface org.eclipse.net4j.util.event.INotifier

      `addListener, getListeners, hasListeners, removeListener`

- - ### Method Detail

    - #### getLocalSession

          CDOSession getLocalSession()

      Returns the `local session` this CDORemoteSessionManager belongs to.

    - #### getRemoteSessions

          CDORemoteSession[] getRemoteSessions()

      Returns the set of `remote sessions` that are connected to the same repository as the `local session`. If this CDORemoteSessionManager itself is `subscribed` the result is returned from a local cache for remote sessions, otherwise it is requested from the server each time this method is called.

    - #### isSubscribed

          boolean isSubscribed()

      Returns `true` if this CDORemoteSessionManager is subscribed to changes in the set of remote sessions and delivers `custom data events`, `false` otherwise. It is subscribed if at least one is true:
      1. At least one `listener` is registered with this remote session manager.
      2. `Force subscription` is `true`.
      See Also:
        `INotifier.addListener(IListener)`, `setForceSubscription(boolean)`

    - #### isForceSubscription

          boolean isForceSubscription()

      Returns `true` if this CDORemoteSessionManager shall be subscribed to changes in the set of remote sessions and delivers `custom data events` even if no `listener` is registered, `false` otherwise.
      See Also:
        `INotifier.addListener(IListener)`, `setForceSubscription(boolean)`

    - #### setForceSubscription

          void setForceSubscription(boolean forceSubscription)

      Enables or disables subscription to changes in the set of remote sessions even if no `listener` is registered.
      See Also:
        `INotifier.addListener(IListener)`, `setForceSubscription(boolean)`

    - #### sendMessage

          java.util.Set<CDORemoteSession> sendMessage(CDORemoteSessionMessage message,
                                                      CDORemoteSession... recipients)

      Sends a multicast message to the subscribed recipients.
      Returns:
        The set of `recipients` that the message has been forwarded to by the server. Note: No assumption must be made on whether a recipient session received the message and was able to handle it adequately!
      Since:
        3.0

    - #### sendMessage

          java.util.Set<CDORemoteSession> sendMessage(CDORemoteSessionMessage message,
                                                      java.util.Collection<CDORemoteSession> recipients)

      Same as `sendMessage(CDORemoteSessionMessage, CDORemoteSession...)` but with a recipients `collection`.
      Since:
        3.0

Copyright (c) 2014 Eike Stepper (Berlin, Germany) and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html