Package org.eclipse.ecf.provider.generic

## Class SOContainer

- java.lang.Object
- - org.eclipse.ecf.core.AbstractContainer
  - - org.eclipse.ecf.provider.generic.SOContainer

All Implemented Interfaces:
  `org.eclipse.core.runtime.IAdaptable`, `IContainer`, `IIdentifiable`, `IReliableContainer`, `ISharedObjectContainer`

Direct Known Subclasses:
  `ClientSOContainer`, `ServerSOContainer`

    public abstract class SOContainer
    extends AbstractContainer
    implements ISharedObjectContainer

### Field Summary

Fields
`protected ISharedObjectContainerConfig` `config`
`static String` `DEFAULT_OBJECT_ARG_KEY`
`static String` `DEFAULT_OBJECT_ARGTYPES_KEY`
`protected org.eclipse.ecf.provider.generic.SOContainerGMM` `groupManager`
`protected boolean` `isClosing`
`protected ThreadGroup` `loadingThreadGroup`
`protected ISharedObjectPolicy` `policy`
`protected ISynchAsynchEventHandler` `receiver`
`protected SOManager` `sharedObjectManager`
`protected ISharedObjectMessageSerializer` `sharedObjectMessageSerializer`
`protected ThreadGroup` `sharedObjectThreadGroup`

### Constructor Summary

Constructors
`SOContainer​(ISharedObjectContainerConfig config)`

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`protected boolean` `addNewRemoteMember​(ID memberID, Object data)`
`protected ISharedObjectContainerTransaction` `addSharedObject0​(ID id, ISharedObject s, Map props)`
`protected void` `addSharedObjectAndWait​(ID id, ISharedObject s, Map properties)`
`protected ISharedObjectContainerTransaction` `addSharedObjectWrapper​(SOWrapper wrapper)`
`protected boolean` `addToLoading​(org.eclipse.ecf.provider.generic.SOContainer.LoadingSharedObject lso)`
`protected Object` `checkRemoteCreate​(ID fromID, ID toID, ReplicaSharedObjectDescription desc)` Check remote creation of shared objects.
`abstract void` `connect​(ID groupID, IConnectContext connectContext)` Connect to a target remote process or process group.
`protected Map` `createContainerPropertiesForSharedObject​(ID sharedObjectID)`
`protected SOConfig` `createRemoteSharedObjectConfig​(ID fromID, ReplicaSharedObjectDescription sd, ISharedObject obj)`
`protected SOContext` `createRemoteSharedObjectContext​(SOConfig soconfig, IQueueEnqueue queue)`
`protected SOWrapper` `createRemoteSharedObjectWrapper​(ID fromID, ReplicaSharedObjectDescription sd, ISharedObject s)`
`protected SOConfig` `createSharedObjectConfig​(ID id, ISharedObject obj, Map props)`
`protected SOContext` `createSharedObjectContext​(SOConfig soconfig, IQueueEnqueue queue)`
`protected SOWrapper` `createSharedObjectWrapper​(ID id, ISharedObject s, Map props)`
`protected void` `debug​(String msg)`
`protected Object` `defaultDeserializeSharedObjectMessage​(byte[] bytes)`
`protected byte[]` `defaultSerializeSharedObjectMessage​(ID sharedObjectID, Object message)`
`static ContainerMessage` `deserializeContainerMessage​(byte[] bytes)`
`protected Object` `deserializeSharedObjectMessage​(byte[] bytes)`
`protected boolean` `destroySharedObject​(ID sharedObjectID)`
`abstract void` `disconnect()` Disconnect.
`protected void` `disconnect​(IConnection conn)`
`void` `dispose()` Dispose this IContainer instance.
`protected void` `fireDelegateContainerEvent​(IContainerEvent containerEvent)`
`protected void` `forward​(ID fromID, ID toID, ContainerMessage data)`
`protected abstract void` `forwardExcluding​(ID from, ID excluding, ContainerMessage data)`
`protected abstract void` `forwardToRemote​(ID from, ID to, ContainerMessage data)`
`Object` `getAdapter​(Class adapter)` This specialization of IAdaptable.getAdapter() returns additional services supported by this container.
`protected Object[]` `getArgsFromProperties​(SharedObjectDescription sd)`
`protected String[]` `getArgTypesFromProperties​(SharedObjectDescription sd)`
`protected ClassLoader` `getClassLoaderForContainer()`
`protected ClassLoader` `getClassLoaderForSharedObject​(SharedObjectDescription sd)`
`ISharedObjectContainerConfig` `getConfig()`
`abstract ID` `getConnectedID()` Get the target ID that this container instance has connected to.
`Namespace` `getConnectNamespace()` Get the Namespace for creating a targetID suitable for use as the first parameter in subsequent calls to `IContainer.connect(ID, IConnectContext)`.
`ID[]` `getGroupMemberIDs()` Get the current membership of the joined group.
`protected Object` `getGroupMembershipLock()`
`ID` `getID()` Return the ID for this 'identifiable' object.
`protected abstract ID` `getIDForConnection​(IAsynchConnection connection)`
`protected int` `getMaxGroupMembers()`
`ISynchAsynchEventHandler` `getMessageReceiver()`
`protected Thread` `getNewSharedObjectThread​(ID sharedObjectID, Runnable runnable)`
`protected long` `getNextSequenceNumber()`
`protected ID[]` `getOtherMemberIDs()`
`protected ISynchAsynchEventHandler` `getReceiver()`
`protected ISharedObject` `getSharedObject​(ID id)`
`protected ID[]` `getSharedObjectIDs()`
`ISharedObjectManager` `getSharedObjectManager()` Get SharedObjectManager for this container
`protected ISharedObjectMessageSerializer` `getSharedObjectMessageSerializer()`
`protected SOWrapper` `getSharedObjectWrapper​(ID id)`
`protected void` `handleAsynchIOException​(IOException except, AsynchEvent e)`
`protected void` `handleCreateMessage​(ContainerMessage mess)`
`protected void` `handleCreateResponseMessage​(ContainerMessage mess)`
`protected void` `handleLeave​(ID leftID, IConnection conn)`
`protected abstract void` `handleLeaveGroupMessage​(ContainerMessage mess)`
`protected void` `handleSharedObjectDisposeMessage​(ContainerMessage mess)`
`protected void` `handleSharedObjectMessage​(ContainerMessage mess)`
`protected void` `handleUndeliveredSharedObjectMessage​(ContainerMessage.SharedObjectMessage resp)`
`protected void` `handleUnidentifiedMessage​(ContainerMessage mess)`
`protected abstract void` `handleViewChangeMessage​(ContainerMessage mess)`
`protected boolean` `isClosing()`
`abstract boolean` `isGroupManager()`
`protected ISharedObject` `load​(SharedObjectDescription sd)`
`protected void` `moveFromLoadingToActive​(SOWrapper wrap)`
`protected void` `notifySharedObjectActivated​(ID sharedObjectID)`
`protected void` `notifySharedObjectDeactivated​(ID sharedObjectID)`
`protected static void` `printToSystemError​(String message, Throwable t)`
`protected void` `processAsynch​(AsynchEvent event)`
`protected abstract void` `processDisconnect​(DisconnectEvent event)`
`protected Serializable` `processSynch​(SynchEvent e)`
`protected abstract void` `queueContainerMessage​(ContainerMessage mess)`
`protected void` `removeFromLoading​(ID id)`
`protected boolean` `removeRemoteMember​(ID remoteMember)`
`protected ISharedObject` `removeSharedObject​(ID id)`
`protected void` `sendCreate​(ID sharedObjectID, ID toContainerID, SharedObjectDescription sd)`
`protected void` `sendCreateResponse​(ID homeID, ID sharedObjectID, Throwable t, long identifier)`
`protected void` `sendCreateResponseSharedObjectMessage​(ID toContainerID, ID fromSharedObject, Throwable t, long ident)`
`protected ID[]` `sendCreateSharedObjectMessage​(ID toContainerID, SharedObjectDescription sd)`
`protected void` `sendDispose​(ID toContainerID, ID sharedObjectID)`
`protected void` `sendDisposeSharedObjectMessage​(ID toContainerID, ID fromSharedObject)`
`protected void` `sendMessage​(ID toContainerID, ID sharedObjectID, Object message)`
`protected void` `sendMessage​(ContainerMessage data)`
`protected void` `sendSharedObjectMessage​(ID toContainerID, ID fromSharedObject, Serializable data)`
`static byte[]` `serialize​(Serializable obj)`
`protected byte[]` `serializeSharedObjectMessage​(ID sharedObjectID, Object message)`
`protected void` `setMaxGroupMembers​(int max)`
`protected void` `setRemoteAddPolicy​(ISharedObjectPolicy policy)`
`void` `setSharedObjectMessageSerializer​(ISharedObjectMessageSerializer serializer)` Set the shared object message serializer.
`protected void` `traceStack​(String msg, Throwable e)`
`protected ContainerMessage` `validateContainerMessage​(Object mess)`
`protected boolean` `verifySharedObjectMessageTarget​(ID containerID)`
`protected boolean` `verifyToIDForSharedObjectMessage​(ID toID)`

### Methods inherited from class org.eclipse.ecf.core.AbstractContainer

`addListener, fireContainerEvent, getPasswordFromConnectContext, removeListener`

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

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

### Methods inherited from interface org.eclipse.ecf.core.IContainer

`addListener, removeListener`

### Field Detail

#### DEFAULT_OBJECT_ARG_KEY

    public static final String DEFAULT_OBJECT_ARG_KEY

#### DEFAULT_OBJECT_ARGTYPES_KEY

    public static final String DEFAULT_OBJECT_ARGTYPES_KEY

#### config

    protected ISharedObjectContainerConfig config

#### groupManager

    protected org.eclipse.ecf.provider.generic.SOContainerGMM groupManager

#### isClosing

    protected boolean isClosing

#### loadingThreadGroup

    protected ThreadGroup loadingThreadGroup

#### sharedObjectManager

    protected SOManager sharedObjectManager

#### policy

    protected ISharedObjectPolicy policy

#### sharedObjectThreadGroup

    protected ThreadGroup sharedObjectThreadGroup

#### sharedObjectMessageSerializer

    protected ISharedObjectMessageSerializer sharedObjectMessageSerializer

Since:
  2.0

#### receiver

    protected ISynchAsynchEventHandler receiver

### Constructor Detail

#### SOContainer

    public SOContainer​(ISharedObjectContainerConfig config)

### Method Detail

#### setSharedObjectMessageSerializer

    public void setSharedObjectMessageSerializer​(ISharedObjectMessageSerializer serializer)

Description copied from interface: `ISharedObjectContainer`

Set the shared object message serializer. The serializer should not be `null`.

Note that users of this method should guarantee that their are not pending messages to be sent/received...typically by only calling this method prior to connecting/being connected to from remote containers.

Note also that the serializer must perform well when it's methods are called, to prevent negatively impacting overall container messaging performance.

Specified by:
  `setSharedObjectMessageSerializer` in interface `ISharedObjectContainer`
Since:
  2.0

#### getSharedObjectMessageSerializer

    protected ISharedObjectMessageSerializer getSharedObjectMessageSerializer()

Returns:
  ISharedObjectMessageSerializer the shared object message serializer
Since:
  2.0

#### getID

    public ID getID()

Description copied from interface: `IIdentifiable`
Return the ID for this 'identifiable' object. The returned ID should be unique within its namespace. May return `null`.

Specified by:
  `getID` in interface `IIdentifiable`
Returns:
  the ID for this identifiable object. May return `null`.

#### connect

    public abstract void connect​(ID groupID,
                                 IConnectContext connectContext)
                          throws ContainerConnectException

Description copied from interface: `IContainer`
Connect to a target remote process or process group. The target identified by the first parameter (targetID) is connected the implementation class. If authentication information is required, the required information is given via via the second parameter (connectContext). Callers note that depending upon the provider implementation this method may block. It is suggested that callers use a separate thread to call this method. This method provides an implementation independent way for container implementations to connect, authenticate, and communicate with a remote service or group of services. Providers are responsible for implementing this operation in a way appropriate to the given remote service (or group) via expected protocol.

Specified by:
  `connect` in interface `IContainer`
Parameters:
  `groupID` - the ID of the remote server or group to connect to. See `IContainer.getConnectNamespace()` for a explanation of the constraints upon this parameter.
  `connectContext` - any required context to allow this container to authenticate. May be `null` if underlying provider does not have any authentication requirements for connection.
Throws:
  `ContainerConnectException` - thrown if communication cannot be established with remote service. Causes can include network connection failure, authentication failure, server error, or if container is already connected.

#### getConnectedID

    public abstract ID getConnectedID()

Description copied from interface: `IContainer`
Get the target ID that this container instance has connected to. Returns null if not connected.

Specified by:
  `getConnectedID` in interface `IContainer`
Returns:
  ID of the target we are connected to. Returns `null` if container not connected.

#### disconnect

    public abstract void disconnect()

Description copied from interface: `IContainer`
Disconnect. This operation will disconnect the local container instance from any previously joined target or group. Subsequent calls to getConnectedID() will return `null`.

Specified by:
  `disconnect` in interface `IContainer`

#### getConnectNamespace

    public Namespace getConnectNamespace()

Description copied from interface: `IContainer`
Get the Namespace for creating a targetID suitable for use as the first parameter in subsequent calls to `IContainer.connect(ID, IConnectContext)`. If this method returns `null`, then it means that `null` is expected as a valid parameter in subsequent calls to `IContainer.connect(ID, IConnectContext)`. If this method returns a non-`null` Namespace, then the `targetID` parameter in `IContainer.connect(ID, IConnectContext)` must be non-`null` instance created of the returned Namespace.

Specified by:
  `getConnectNamespace` in interface `IContainer`
Returns:
  Namespace the namespace associated with subsequent calls to `IContainer.connect(ID, IConnectContext)`. If `null`, then the `targetID` instances passed to `IContainer.connect(ID, IConnectContext)` may be `null`. If not `null`, then `targetID` instances passed to `IContainer.connect(ID, IConnectContext)` must be instances of the returned Namespace.

#### dispose

    public void dispose()

Description copied from interface: `IContainer`
Dispose this IContainer instance. The container instance will be made inactive after the completion of this method and will be unavailable for subsequent usage.

Specified by:
  `dispose` in interface `IContainer`
Overrides:
  `dispose` in class `AbstractContainer`

#### getAdapter

    public Object getAdapter​(Class adapter)

Description copied from interface: `IContainer`
This specialization of IAdaptable.getAdapter() returns additional services supported by this container. A container that supports additional services over and above the methods on `IContainer` should return them using this method. It is recommended that clients use this method rather than instanceof checks and downcasts to find out about the capabilities of a specific container.

Typically, after obtaining an IContainer, a client would use this method as a means to obtain a more meaningful interface to the container. This interface may or may not extend IContainer. For example, a client could use the following code to obtain an instance of ISharedObjectContainer:

     IContainer newContainer = ContainerFactory.createContainer(type);
     ISharedObjectContainer soContainer = (ISharedObjectContainer) newContainer
                    .getAdapter(ISharedObjectContainer.class);
     if (soContainer == null)
            throw new ContainerCreateException(message);

Implementations of this method should delegate to `IAdapterManager.loadAdapter()` if the service cannot be provided directly to ensure extensibility by third-party plug-ins.

Specified by:
  `getAdapter` in interface `org.eclipse.core.runtime.IAdaptable`
Specified by:
  `getAdapter` in interface `IContainer`
Overrides:
  `getAdapter` in class `AbstractContainer`
Parameters:
  `adapter` - the service type to look up
Returns:
  the service instance castable to the given class, or `null` if this container does not support the given service

#### getSharedObjectManager

    public ISharedObjectManager getSharedObjectManager()

Description copied from interface: `ISharedObjectContainer`
Get SharedObjectManager for this container

Specified by:
  `getSharedObjectManager` in interface `ISharedObjectContainer`
Returns:
  ISharedObjectManager for this container instance

#### getGroupMemberIDs

    public ID[] getGroupMemberIDs()

Description copied from interface: `IReliableContainer`
Get the current membership of the joined group. This method will accurately report the current group membership of the connected group.

Specified by:
  `getGroupMemberIDs` in interface `IReliableContainer`
Returns:
  ID[] the IDs of the current group membership

#### getConfig

    public ISharedObjectContainerConfig getConfig()

#### isGroupManager

    public abstract boolean isGroupManager()

Specified by:
  `isGroupManager` in interface `IReliableContainer`
Returns:
  true if this IReliableContainer instance is in the 'manager' role for the group, false otherwise.

#### setRemoteAddPolicy

    protected void setRemoteAddPolicy​(ISharedObjectPolicy policy)

#### addNewRemoteMember

    protected boolean addNewRemoteMember​(ID memberID,
                                         Object data)

#### addSharedObject0

    protected ISharedObjectContainerTransaction addSharedObject0​(ID id,
                                                                 ISharedObject s,
                                                                 Map props)
                                                          throws Exception

Throws:
  `Exception`

#### addSharedObjectAndWait

    protected void addSharedObjectAndWait​(ID id,
                                          ISharedObject s,
                                          Map properties)
                                   throws Exception

Throws:
  `Exception`

#### addSharedObjectWrapper

    protected ISharedObjectContainerTransaction addSharedObjectWrapper​(SOWrapper wrapper)
                                                                throws Exception

Throws:
  `Exception`

#### addToLoading

    protected boolean addToLoading​(org.eclipse.ecf.provider.generic.SOContainer.LoadingSharedObject lso)

#### checkRemoteCreate

    protected Object checkRemoteCreate​(ID fromID,
                                       ID toID,
                                       ReplicaSharedObjectDescription desc)
                                throws Exception

Check remote creation of shared objects. This method is called by the remote shared object creation message handler, to verify that the shared object from container 'fromID' to container 'toID' with description 'desc' is to be allowed to be created within the current container. If this method throws, a failure (and exception will be sent back to caller If this method returns null, the create message is ignored. If this method returns a non-null object, the creation is allowed to proceed. The default implementation is to return a non-null object

Parameters:
  `fromID` - the ID of the container sending us this create request
  `toID` - the ID (or null) of the container intended to receive this request
  `desc` - the SharedObjectDescription that describes the shared object to be created
Returns:
  Object null if the create message is to be ignored, non-null if the creation should continue
Throws:
  `Exception` - may throw any Exception to communicate back (via sendCreateResponse) to the sender that the creation has failed

#### debug

    protected void debug​(String msg)

#### traceStack

    protected void traceStack​(String msg,
                              Throwable e)

#### destroySharedObject

    protected boolean destroySharedObject​(ID sharedObjectID)

#### forward

    protected final void forward​(ID fromID,
                                 ID toID,
                                 ContainerMessage data)
                          throws IOException

Throws:
  `IOException`

#### forwardExcluding

    protected abstract void forwardExcluding​(ID from,
                                             ID excluding,
                                             ContainerMessage data)
                                      throws IOException

Throws:
  `IOException`

#### forwardToRemote

    protected abstract void forwardToRemote​(ID from,
                                            ID to,
                                            ContainerMessage data)
                                     throws IOException

Throws:
  `IOException`

#### getArgsFromProperties

    protected Object[] getArgsFromProperties​(SharedObjectDescription sd)

Parameters:
  `sd` - shared object description
Returns:
  Object[] arguments from the shared object description properties

#### getArgTypesFromProperties

    protected String[] getArgTypesFromProperties​(SharedObjectDescription sd)

Parameters:
  `sd` - shared object description
Returns:
  String[] arguments types from shared object description properties

#### serialize

    public static byte[] serialize​(Serializable obj)
                            throws IOException

Throws:
  `IOException`

#### getClassLoaderForContainer

    protected ClassLoader getClassLoaderForContainer()

#### getClassLoaderForSharedObject

    protected ClassLoader getClassLoaderForSharedObject​(SharedObjectDescription sd)

Parameters:
  `sd` - shared object description
Returns:
  ClassLoader classloader to used for given shared object description

#### getGroupMembershipLock

    protected Object getGroupMembershipLock()

#### getMaxGroupMembers

    protected int getMaxGroupMembers()

#### getNewSharedObjectThread

    protected Thread getNewSharedObjectThread​(ID sharedObjectID,
                                              Runnable runnable)

#### getNextSequenceNumber

    protected long getNextSequenceNumber()

#### deserializeContainerMessage

    public static ContainerMessage deserializeContainerMessage​(byte[] bytes)
                                                        throws IOException

Throws:
  `IOException`

#### printToSystemError

    protected static void printToSystemError​(String message,
                                             Throwable t)

Parameters:
  `message` - message
  `t` - exception to print to system error
Since:
  2.0

#### getOtherMemberIDs

    protected ID[] getOtherMemberIDs()

#### getReceiver

    protected ISynchAsynchEventHandler getReceiver()

#### getMessageReceiver

    public ISynchAsynchEventHandler getMessageReceiver()

Returns:
  ISynchAsyncEventHandler message receiver
Since:
  4.7

#### getSharedObject

    protected ISharedObject getSharedObject​(ID id)

#### getSharedObjectIDs

    protected ID[] getSharedObjectIDs()

#### getSharedObjectWrapper

    protected SOWrapper getSharedObjectWrapper​(ID id)

#### handleAsynchIOException

    protected void handleAsynchIOException​(IOException except,
                                           AsynchEvent e)

#### handleCreateMessage

    protected void handleCreateMessage​(ContainerMessage mess)
                                throws IOException

Throws:
  `IOException`

#### handleCreateResponseMessage

    protected void handleCreateResponseMessage​(ContainerMessage mess)
                                        throws IOException

Throws:
  `IOException`

#### handleLeaveGroupMessage

    protected abstract void handleLeaveGroupMessage​(ContainerMessage mess)

Parameters:
  `mess` - leave group message

#### verifySharedObjectMessageTarget

    protected boolean verifySharedObjectMessageTarget​(ID containerID)

Parameters:
  `containerID` - containerID
Returns:
  boolean true if verified, false otherwise
Since:
  4.0

#### handleSharedObjectDisposeMessage

    protected void handleSharedObjectDisposeMessage​(ContainerMessage mess)
                                             throws IOException

Throws:
  `IOException`

#### verifyToIDForSharedObjectMessage

    protected boolean verifyToIDForSharedObjectMessage​(ID toID)

#### handleSharedObjectMessage

    protected void handleSharedObjectMessage​(ContainerMessage mess)
                                      throws IOException

Throws:
  `IOException`

#### handleUndeliveredSharedObjectMessage

    protected void handleUndeliveredSharedObjectMessage​(ContainerMessage.SharedObjectMessage resp)

Parameters:
  `resp` - response message
Since:
  4.0

#### handleUnidentifiedMessage

    protected void handleUnidentifiedMessage​(ContainerMessage mess)
                                      throws IOException

Parameters:
  `mess` - message
Throws:
  `IOException` - not thrown by this implementation.

#### handleViewChangeMessage

    protected abstract void handleViewChangeMessage​(ContainerMessage mess)
                                             throws IOException

Throws:
  `IOException`

#### isClosing

    protected boolean isClosing()

#### disconnect

    protected void disconnect​(IConnection conn)

#### load

    protected ISharedObject load​(SharedObjectDescription sd)
                          throws Exception

Throws:
  `Exception`

#### createSharedObjectConfig

    protected SOConfig createSharedObjectConfig​(ID id,
                                                ISharedObject obj,
                                                Map props)
                                         throws ECFException

Parameters:
  `id` - id
  `obj` - obj
  `props` - props
Returns:
  SOConfig a non-`null` instance.
Throws:
  `ECFException` - not thrown by this implementation.

#### createRemoteSharedObjectConfig

    protected SOConfig createRemoteSharedObjectConfig​(ID fromID,
                                                      ReplicaSharedObjectDescription sd,
                                                      ISharedObject obj)

#### createSharedObjectContext

    protected SOContext createSharedObjectContext​(SOConfig soconfig,
                                                  IQueueEnqueue queue)

#### createRemoteSharedObjectContext

    protected SOContext createRemoteSharedObjectContext​(SOConfig soconfig,
                                                        IQueueEnqueue queue)

#### createSharedObjectWrapper

    protected SOWrapper createSharedObjectWrapper​(ID id,
                                                  ISharedObject s,
                                                  Map props)
                                           throws ECFException

Throws:
  `ECFException`

#### createRemoteSharedObjectWrapper

    protected SOWrapper createRemoteSharedObjectWrapper​(ID fromID,
                                                        ReplicaSharedObjectDescription sd,
                                                        ISharedObject s)

#### handleLeave

    protected void handleLeave​(ID leftID,
                               IConnection conn)

#### moveFromLoadingToActive

    protected void moveFromLoadingToActive​(SOWrapper wrap)

#### notifySharedObjectActivated

    protected void notifySharedObjectActivated​(ID sharedObjectID)

#### notifySharedObjectDeactivated

    protected void notifySharedObjectDeactivated​(ID sharedObjectID)

#### validateContainerMessage

    protected ContainerMessage validateContainerMessage​(Object mess)

#### processAsynch

    protected void processAsynch​(AsynchEvent event)
                          throws IOException

Parameters:
  `event` - event
Throws:
  `IOException` - not thrown by this implementation.

#### getIDForConnection

    protected abstract ID getIDForConnection​(IAsynchConnection connection)

#### processDisconnect

    protected abstract void processDisconnect​(DisconnectEvent event)

#### processSynch

    protected Serializable processSynch​(SynchEvent e)
                                 throws IOException

Throws:
  `IOException`

#### queueContainerMessage

    protected abstract void queueContainerMessage​(ContainerMessage mess)
                                           throws IOException

Throws:
  `IOException`

#### removeFromLoading

    protected void removeFromLoading​(ID id)

#### removeRemoteMember

    protected boolean removeRemoteMember​(ID remoteMember)

#### removeSharedObject

    protected ISharedObject removeSharedObject​(ID id)

#### sendCreate

    protected void sendCreate​(ID sharedObjectID,
                              ID toContainerID,
                              SharedObjectDescription sd)
                       throws IOException

Throws:
  `IOException`

#### sendCreateResponse

    protected void sendCreateResponse​(ID homeID,
                                      ID sharedObjectID,
                                      Throwable t,
                                      long identifier)
                               throws IOException

Throws:
  `IOException`

#### sendCreateResponseSharedObjectMessage

    protected void sendCreateResponseSharedObjectMessage​(ID toContainerID,
                                                         ID fromSharedObject,
                                                         Throwable t,
                                                         long ident)
                                                  throws IOException

Throws:
  `IOException`

#### sendCreateSharedObjectMessage

    protected ID[] sendCreateSharedObjectMessage​(ID toContainerID,
                                                 SharedObjectDescription sd)
                                          throws IOException

Throws:
  `IOException`

#### createContainerPropertiesForSharedObject

    protected Map createContainerPropertiesForSharedObject​(ID sharedObjectID)

#### sendDispose

    protected void sendDispose​(ID toContainerID,
                               ID sharedObjectID)
                        throws IOException

Throws:
  `IOException`

#### sendDisposeSharedObjectMessage

    protected void sendDisposeSharedObjectMessage​(ID toContainerID,
                                                  ID fromSharedObject)
                                           throws IOException

Throws:
  `IOException`

#### sendMessage

    protected void sendMessage​(ContainerMessage data)
                        throws IOException

Throws:
  `IOException`

#### serializeSharedObjectMessage

    protected byte[] serializeSharedObjectMessage​(ID sharedObjectID,
                                                  Object message)
                                           throws IOException

Throws:
  `IOException`

#### defaultSerializeSharedObjectMessage

    protected byte[] defaultSerializeSharedObjectMessage​(ID sharedObjectID,
                                                         Object message)
                                                  throws IOException

Parameters:
  `sharedObjectID` - shared object ID
  `message` - message
Returns:
  byte[] serialized message
Throws:
  `IOException` - if some problem serializing
Since:
  2.0

#### defaultDeserializeSharedObjectMessage

    protected Object defaultDeserializeSharedObjectMessage​(byte[] bytes)
                                                    throws IOException,
                                                           ClassNotFoundException

Parameters:
  `bytes` - data to deserialized
Returns:
  Object the deserialized shared object message
Throws:
  `IOException` - if deserialization cannot be done
  `ClassNotFoundException` - if deserialization cannot be done
Since:
  2.0

#### deserializeSharedObjectMessage

    protected Object deserializeSharedObjectMessage​(byte[] bytes)
                                             throws IOException,
                                                    ClassNotFoundException

Throws:
  `IOException`
  `ClassNotFoundException`

#### sendMessage

    protected void sendMessage​(ID toContainerID,
                               ID sharedObjectID,
                               Object message)
                        throws IOException

Throws:
  `IOException`

#### sendSharedObjectMessage

    protected void sendSharedObjectMessage​(ID toContainerID,
                                           ID fromSharedObject,
                                           Serializable data)
                                    throws IOException

Throws:
  `IOException`

#### setMaxGroupMembers

    protected void setMaxGroupMembers​(int max)

#### fireDelegateContainerEvent

    protected void fireDelegateContainerEvent​(IContainerEvent containerEvent)

Parameters:
  `containerEvent` - container event