Package org.eclipse.emf.cdo.server.net4j

## Class FailoverMonitor

- java.lang.Object
- - org.eclipse.net4j.util.event.Notifier
  - - org.eclipse.net4j.util.lifecycle.Lifecycle
    - - org.eclipse.net4j.util.lifecycle.ShareableLifecycle
      - - org.eclipse.net4j.util.container.Container<FailoverMonitor.AgentProtocol>
        - - org.eclipse.emf.cdo.server.net4j.FailoverMonitor

- All Implemented Interfaces:
    `org.eclipse.net4j.util.container.IContainer<FailoverMonitor.AgentProtocol>`, `org.eclipse.net4j.util.event.INotifier`, `org.eclipse.net4j.util.event.INotifier.INotifier2`, `org.eclipse.net4j.util.lifecycle.IDeactivateable`, `org.eclipse.net4j.util.lifecycle.ILifecycle`, `org.eclipse.net4j.util.lifecycle.ILifecycle.DeferrableActivation`

      public class FailoverMonitor
      extends org.eclipse.net4j.util.container.Container<FailoverMonitor.AgentProtocol>

  A facility for monitoring a variable set of `fail-over participant` repositories and electing, as well as promoting, a `master` repository among them.
  Since:
    4.0
  Author:
    Eike Stepper

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `FailoverMonitor.AbstractServerProtocolFactory` | An abstract base class for the `server-side protocol factories` required by a `fail-over monitor`.
    `static class` | `FailoverMonitor.AgentProtocol` | The monitor-side implementation of the `fail-over monitor` agent protocol.
    `static class` | `FailoverMonitor.ClientProtocol` | The monitor-side implementation of the `fail-over monitor` client protocol.
    `static class` | `FailoverMonitor.Factory` | Creates `fail-over monitor` instances.
    `static interface` | `FailoverMonitor.Provider` | Provides a `fail-over monitor` for a given named fail-over group.

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

      `org.eclipse.net4j.util.container.IContainer.Modifiable<E extends java.lang.Object>, org.eclipse.net4j.util.container.IContainer.Persistable<E extends java.lang.Object>, org.eclipse.net4j.util.container.IContainer.Persistence<E extends java.lang.Object>`

    - ### Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.ILifecycle

      `org.eclipse.net4j.util.lifecycle.ILifecycle.DeferrableActivation`

    - ### Nested classes/interfaces inherited from interface org.eclipse.net4j.util.event.INotifier

      `org.eclipse.net4j.util.event.INotifier.INotifier2`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static java.lang.String` | `PRODUCT_GROUP` |
    `static java.lang.String` | `PROTOCOL_NAME` |
    `static short` | `SIGNAL_PUBLISH_MASTER` |

    - ### Fields inherited from class org.eclipse.net4j.util.lifecycle.Lifecycle

      `USE_LABEL`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `FailoverMonitor()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `deregisterAgent​(FailoverMonitor.AgentProtocol agent)` |
    `protected void` | `doBeforeActivate()` |
    `protected FailoverMonitor.AgentProtocol` | `electNewMaster​(java.util.List<FailoverMonitor.AgentProtocol> agents)` |
    `FailoverMonitor.AgentProtocol[]` | `getElements()` |
    `java.lang.String` | `getGroup()` |
    `FailoverMonitor.AgentProtocol` | `getMasterAgent()` |
    `boolean` | `isEmpty()` |
    `void` | `registerAgent​(FailoverMonitor.AgentProtocol agent)` |
    `void` | `setGroup​(java.lang.String group)` |

    - ### Methods inherited from class org.eclipse.net4j.util.container.Container

      `fireContainerEvent, fireContainerEvent, fireContainerEvent, fireElementAddedEvent, fireElementRemovedEvent, fireElementsAddedEvent, fireElementsRemovedEvent, fireEvent, newContainerEvent, newContainerEvent`

    - ### Methods inherited from class org.eclipse.net4j.util.lifecycle.Lifecycle

      `activate, checkActive, checkArg, checkArg, checkInactive, checkNull, checkState, checkState, deactivate, deferredActivate, doActivate, doAfterActivate, doBeforeDeactivate, doDeactivate, dump, getLifecycleState, isActive, isDeferredActivation, toString`

    - ### Methods inherited from class org.eclipse.net4j.util.event.Notifier

      `addListener, addUniqueListener, fireEvent, fireEvent, fireThrowable, firstListenerAdded, getListeners, getNotificationService, hasListener, hasListeners, lastListenerRemoved, listenerAdded, listenerRemoved, removeListener`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

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

      `addListener, getListeners, hasListeners, removeListener`

- - ### Field Detail

    - #### PRODUCT_GROUP

          public static final java.lang.String PRODUCT_GROUP

      See Also:
        Constant Field Values

    - #### PROTOCOL_NAME

          public static final java.lang.String PROTOCOL_NAME

      See Also:
        Constant Field Values

    - #### SIGNAL_PUBLISH_MASTER

          public static final short SIGNAL_PUBLISH_MASTER

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### FailoverMonitor

          public FailoverMonitor()

  - ### Method Detail

    - #### getGroup

          public java.lang.String getGroup()

    - #### setGroup

          public void setGroup​(java.lang.String group)

    - #### isEmpty

          public boolean isEmpty()

      Specified by:
        `isEmpty` in interface `org.eclipse.net4j.util.container.IContainer<FailoverMonitor.AgentProtocol>`
      Overrides:
        `isEmpty` in class `org.eclipse.net4j.util.container.Container<FailoverMonitor.AgentProtocol>`

    - #### getElements

          public FailoverMonitor.AgentProtocol[] getElements()

    - #### getMasterAgent

          public FailoverMonitor.AgentProtocol getMasterAgent()

    - #### registerAgent

          public void registerAgent​(FailoverMonitor.AgentProtocol agent)

    - #### deregisterAgent

          public void deregisterAgent​(FailoverMonitor.AgentProtocol agent)

    - #### doBeforeActivate

          protected void doBeforeActivate()
                                   throws java.lang.Exception

      Overrides:
        `doBeforeActivate` in class `org.eclipse.net4j.util.lifecycle.Lifecycle`
      Throws:
        `java.lang.Exception`

    - #### electNewMaster

          protected FailoverMonitor.AgentProtocol electNewMaster​(java.util.List<FailoverMonitor.AgentProtocol> agents)