Package org.eclipse.ecf.provider.generic
Class ServerSOContainer
java.lang.Object
org.eclipse.ecf.core.AbstractContainer
org.eclipse.ecf.provider.generic.SOContainer
org.eclipse.ecf.provider.generic.ServerSOContainer
- All Implemented Interfaces:
org.eclipse.core.runtime.IAdaptable
,IContainer
,IIdentifiable
,IReliableContainer
,ISharedObjectContainer
,ISharedObjectContainerGroupManager
- Direct Known Subclasses:
ServletServerContainer
,SSLServerSOContainer
,TCPServerSOContainer
-
Field Summary
Fields inherited from class org.eclipse.ecf.provider.generic.SOContainer
config, DEFAULT_OBJECT_ARG_KEY, DEFAULT_OBJECT_ARGTYPES_KEY, groupManager, isClosing, loadingThreadGroup, policy, receiver, sharedObjectManager, sharedObjectMessageSerializer, sharedObjectThreadGroup
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected ContainerMessage
acceptNewClient
(Socket socket, String target, Serializable data, ISynchAsynchConnection conn) protected Object
checkJoin
(SocketAddress saddr, ID fromID, String target, Serializable data) void
connect
(ID groupID, IConnectContext joinContext) Connect to a target remote process or process group.void
Disconnect.void
dispose()
Dispose this IContainer instance.void
ejectAllGroupMembers
(Serializable reason) Eject all, for the given reason.void
ejectGroupMember
(ID memberID, Serializable reason) Eject the given groupMemberID from the current group of containers, for the given reason.protected void
forwardExcluding
(ID from, ID excluding, ContainerMessage data) protected void
forwardToRemote
(ID from, ID to, ContainerMessage data) Get the target ID that this container instance has connected to.protected IAsynchConnection
getConnectionForID
(ID memberID) protected ID
protected ISynchConnection
getSynchConnectionForID
(ID memberID) protected void
protected void
boolean
protected void
protected void
queueContainerMessage
(ContainerMessage message) void
Set the join policy for this group manager.Methods inherited from class org.eclipse.ecf.provider.generic.SOContainer
addNewRemoteMember, addSharedObject0, addSharedObjectAndWait, addSharedObjectWrapper, addToLoading, checkRemoteCreate, createContainerPropertiesForSharedObject, createRemoteSharedObjectConfig, createRemoteSharedObjectContext, createRemoteSharedObjectWrapper, createSharedObjectConfig, createSharedObjectContext, createSharedObjectWrapper, debug, defaultDeserializeSharedObjectMessage, defaultSerializeSharedObjectMessage, deserializeContainerMessage, deserializeSharedObjectMessage, destroySharedObject, disconnect, fireDelegateContainerEvent, forward, getAdapter, getArgsFromProperties, getArgTypesFromProperties, getClassLoaderForContainer, getClassLoaderForSharedObject, getConfig, getConnectNamespace, getGroupMemberIDs, getGroupMembershipLock, getID, getMaxGroupMembers, getMessageReceiver, getNewSharedObjectThread, getNextSequenceNumber, getOtherMemberIDs, getReceiver, getSharedObject, getSharedObjectIDs, getSharedObjectManager, getSharedObjectMessageSerializer, getSharedObjectWrapper, handleAsynchIOException, handleCreateMessage, handleCreateResponseMessage, handleLeave, handleSharedObjectDisposeMessage, handleSharedObjectMessage, handleUndeliveredSharedObjectMessage, handleUnidentifiedMessage, isClosing, load, moveFromLoadingToActive, notifySharedObjectActivated, notifySharedObjectDeactivated, printToSystemError, processAsynch, processSynch, removeFromLoading, removeRemoteMember, removeSharedObject, sendCreate, sendCreateResponse, sendCreateResponseSharedObjectMessage, sendCreateSharedObjectMessage, sendDispose, sendDisposeSharedObjectMessage, sendMessage, sendMessage, sendSharedObjectMessage, serialize, serializeSharedObjectMessage, setMaxGroupMembers, setRemoteAddPolicy, setSharedObjectMessageSerializer, traceStack, validateContainerMessage, verifySharedObjectMessageTarget, verifyToIDForSharedObjectMessage
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 Details
-
connectHandlerPolicy
-
-
Constructor Details
-
Method Details
-
isGroupManager
public boolean isGroupManager()- Specified by:
isGroupManager
in interfaceIReliableContainer
- Specified by:
isGroupManager
in classSOContainer
- Returns:
- true if this IReliableContainer instance is in the 'manager' role for the group, false otherwise.
-
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 interfaceIContainer
- Specified by:
getConnectedID
in classSOContainer
- Returns:
- ID of the target we are connected to. Returns
null
if container not connected.
-
disconnect
public 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 returnnull
.- Specified by:
disconnect
in interfaceIContainer
- Specified by:
disconnect
in classSOContainer
-
ejectGroupMember
Description copied from interface:ISharedObjectContainerGroupManager
Eject the given groupMemberID from the current group of containers, for the given reason.- Specified by:
ejectGroupMember
in interfaceISharedObjectContainerGroupManager
- Parameters:
memberID
- the ID of the group member to eject. If null, or if group member is not in group managed by this object, the method has no effectreason
- a reason for the ejection
-
ejectAllGroupMembers
Description copied from interface:ISharedObjectContainerGroupManager
Eject all, for the given reason.- Specified by:
ejectAllGroupMembers
in interfaceISharedObjectContainerGroupManager
- Parameters:
reason
- a reason for the ejection
-
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 interfaceIContainer
- Overrides:
dispose
in classSOContainer
-
connect
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 interfaceIContainer
- Specified by:
connect
in classSOContainer
- Parameters:
groupID
- the ID of the remote server or group to connect to. SeeIContainer.getConnectNamespace()
for a explanation of the constraints upon this parameter.joinContext
- any required context to allow this container to authenticate. May benull
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.
-
setConnectPolicy
Description copied from interface:ISharedObjectContainerGroupManager
Set the join policy for this group manager. If the policy is set to null, the implementing container is not obligated to consult the policy. If non-null, the given policy's checkJoin method is called before the manager agrees to the join of a given group participant.- Specified by:
setConnectPolicy
in interfaceISharedObjectContainerGroupManager
-
queueContainerMessage
- Specified by:
queueContainerMessage
in classSOContainer
- Throws:
IOException
-
forwardToRemote
- Specified by:
forwardToRemote
in classSOContainer
- Throws:
IOException
-
forwardExcluding
- Specified by:
forwardExcluding
in classSOContainer
- Throws:
IOException
-
handleViewChangeMessage
- Specified by:
handleViewChangeMessage
in classSOContainer
- Parameters:
mess
- message- Throws:
IOException
- not thrown by this implementation.
-
acceptNewClient
protected ContainerMessage acceptNewClient(Socket socket, String target, Serializable data, ISynchAsynchConnection conn) -
checkJoin
protected Object checkJoin(SocketAddress saddr, ID fromID, String target, Serializable data) throws Exception - Throws:
Exception
-
handleLeaveGroupMessage
- Specified by:
handleLeaveGroupMessage
in classSOContainer
- Parameters:
mess
- leave group message
-
getIDForConnection
- Specified by:
getIDForConnection
in classSOContainer
-
getConnectionForID
-
getSynchConnectionForID
-
processDisconnect
- Specified by:
processDisconnect
in classSOContainer
-