Package org.eclipse.ecf.provider.generic
Class ClientSOContainer
- java.lang.Object
-
- org.eclipse.ecf.core.AbstractContainer
-
- org.eclipse.ecf.provider.generic.SOContainer
-
- org.eclipse.ecf.provider.generic.ClientSOContainer
-
- All Implemented Interfaces:
org.eclipse.core.runtime.IAdaptable
,IContainer
,IIdentifiable
,IReliableContainer
,ISharedObjectContainer
,ISharedObjectContainerClient
- Direct Known Subclasses:
SSLClientSOContainer
,TCPClientSOContainer
public abstract class ClientSOContainer extends SOContainer implements ISharedObjectContainerClient
-
-
Field Summary
Fields Modifier and Type Field Description static byte
CONNECTED
static byte
CONNECTING
protected ISynchAsynchConnection
connection
protected byte
connectionState
protected org.eclipse.ecf.provider.generic.ClientSOContainer.Lock
connectLock
protected IConnectInitiatorPolicy
connectPolicy
static int
DEFAULT_CONNECT_TIMEOUT
static byte
DISCONNECTED
protected ID
remoteServerID
-
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
Constructors Constructor Description ClientSOContainer(ISharedObjectContainerConfig config)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
connect(ID targetID, IConnectContext joinContext)
Connect to a target remote process or process group.protected Callback[]
createAuthorizationCallbacks()
protected abstract ISynchAsynchConnection
createConnection(ID targetID, Object data)
Create connection instance.void
disconnect()
Disconnect.protected void
disconnect(Throwable exception)
void
dispose()
Dispose this IContainer instance.protected void
forwardExcluding(ID from, ID excluding, byte msg, Serializable data)
protected void
forwardExcluding(ID from, ID excluding, ContainerMessage data)
protected void
forwardToRemote(ID from, ID to, ContainerMessage message)
protected Object
getConnectData(ID remote, IConnectContext joinContext)
ID
getConnectedID()
Get the target ID that this container instance has connected to.protected ISynchAsynchConnection
getConnection()
protected org.eclipse.ecf.provider.generic.ClientSOContainer.Lock
getConnectLock()
protected int
getConnectTimeout()
protected ID
getIDForConnection(IAsynchConnection conn)
protected Serializable
getLeaveData(ID target)
protected ID
handleConnectResponse(ID orginalTarget, Object serverData)
protected void
handleLeave(ID fromID, IConnection conn)
protected void
handleLeaveGroupMessage(ContainerMessage mess)
protected void
handleViewChangeMessage(ContainerMessage mess)
protected boolean
isConnected()
protected boolean
isConnecting()
boolean
isGroupManager()
protected void
processAsynch(AsynchEvent evt)
protected void
processDisconnect(DisconnectEvent evt)
protected Serializable
processSynch(SynchEvent evt)
protected void
queueContainerMessage(ContainerMessage message)
protected void
sendCreate(ID sharedObjectId, ID toContainerId, SharedObjectDescription sd)
protected ID[]
sendCreateMsg(ID toID, SharedObjectDescription createInfo)
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)
void
setConnectInitiatorPolicy(IConnectInitiatorPolicy policy)
Set the connect initiator policy handler for authentication policy-
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, handleSharedObjectDisposeMessage, handleSharedObjectMessage, handleUndeliveredSharedObjectMessage, handleUnidentifiedMessage, isClosing, load, moveFromLoadingToActive, notifySharedObjectActivated, notifySharedObjectDeactivated, printToSystemError, removeFromLoading, removeRemoteMember, removeSharedObject, 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 Detail
-
DEFAULT_CONNECT_TIMEOUT
public static final int DEFAULT_CONNECT_TIMEOUT
- See Also:
- Constant Field Values
-
connection
protected ISynchAsynchConnection connection
-
remoteServerID
protected ID remoteServerID
-
connectionState
protected byte connectionState
-
connectPolicy
protected IConnectInitiatorPolicy connectPolicy
-
DISCONNECTED
public static final byte DISCONNECTED
- See Also:
- Constant Field Values
-
CONNECTING
public static final byte CONNECTING
- See Also:
- Constant Field Values
-
CONNECTED
public static final byte CONNECTED
- See Also:
- Constant Field Values
-
connectLock
protected org.eclipse.ecf.provider.generic.ClientSOContainer.Lock connectLock
-
-
Constructor Detail
-
ClientSOContainer
public ClientSOContainer(ISharedObjectContainerConfig config)
-
-
Method Detail
-
getConnectLock
protected org.eclipse.ecf.provider.generic.ClientSOContainer.Lock getConnectLock()
-
getConnection
protected ISynchAsynchConnection getConnection()
-
setConnectInitiatorPolicy
public void setConnectInitiatorPolicy(IConnectInitiatorPolicy policy)
Description copied from interface:ISharedObjectContainerClient
Set the connect initiator policy handler for authentication policy- Specified by:
setConnectInitiatorPolicy
in interfaceISharedObjectContainerClient
- Parameters:
policy
- the policy to use
-
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
-
isGroupManager
public final 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
public 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 interfaceIContainer
- Specified by:
getConnectedID
in classSOContainer
- Returns:
- ID of the target we are connected to. Returns
null
if container not connected.
-
connect
public void connect(ID targetID, IConnectContext joinContext) 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 interfaceIContainer
- Specified by:
connect
in classSOContainer
- Parameters:
targetID
- 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.
-
createAuthorizationCallbacks
protected Callback[] createAuthorizationCallbacks()
-
getConnectData
protected Object getConnectData(ID remote, IConnectContext joinContext) throws IOException, UnsupportedCallbackException
-
getConnectTimeout
protected int getConnectTimeout()
-
handleLeaveGroupMessage
protected void handleLeaveGroupMessage(ContainerMessage mess)
- Specified by:
handleLeaveGroupMessage
in classSOContainer
- Parameters:
mess
- leave group message
-
handleViewChangeMessage
protected void handleViewChangeMessage(ContainerMessage mess) throws IOException
- Specified by:
handleViewChangeMessage
in classSOContainer
- Throws:
IOException
-
forwardExcluding
protected void forwardExcluding(ID from, ID excluding, ContainerMessage data) throws IOException
- Specified by:
forwardExcluding
in classSOContainer
- Parameters:
from
- fromexcluding
- excludingdata
- data- Throws:
IOException
- not thrown by this implementation.
-
getLeaveData
protected Serializable getLeaveData(ID target)
-
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
-
createConnection
protected abstract ISynchAsynchConnection createConnection(ID targetID, Object data) throws ConnectionCreateException
Create connection instance. This method is called byconnect(ID, IConnectContext)
. Following a return from this method, the new ISynchAsynchConnection instance'sIConnection.connect(ID, Object, int)
method is subsequently called.- Parameters:
targetID
- the targetID to connect to. The value is the same as that passed intoconnect(ID, IConnectContext)
.data
- and data provided to the connection via the IConnectContext passed into theconnect(ID, IConnectContext)
call.- Returns:
ISynchAsynchConnection
a connection instance. Will not benull
.- Throws:
ConnectionCreateException
- thrown if the connection cannot be created.
-
queueContainerMessage
protected void queueContainerMessage(ContainerMessage message) throws IOException
- Specified by:
queueContainerMessage
in classSOContainer
- Throws:
IOException
-
forwardExcluding
protected void forwardExcluding(ID from, ID excluding, byte msg, Serializable data) throws IOException
- Parameters:
from
- fromexcluding
- excludingmsg
- msgdata
- data- Throws:
IOException
- not thrown by this implementation.
-
forwardToRemote
protected void forwardToRemote(ID from, ID to, ContainerMessage message) throws IOException
- Specified by:
forwardToRemote
in classSOContainer
- Parameters:
from
- fromto
- tomessage
- message- Throws:
IOException
- not thrown by this implementation.
-
getIDForConnection
protected ID getIDForConnection(IAsynchConnection conn)
- Specified by:
getIDForConnection
in classSOContainer
-
handleLeave
protected void handleLeave(ID fromID, IConnection conn)
- Overrides:
handleLeave
in classSOContainer
-
sendMessage
protected void sendMessage(ContainerMessage data) throws IOException
- Overrides:
sendMessage
in classSOContainer
- Throws:
IOException
-
sendCreateMsg
protected ID[] sendCreateMsg(ID toID, SharedObjectDescription createInfo) throws IOException
- Throws:
IOException
-
sendCreate
protected void sendCreate(ID sharedObjectId, ID toContainerId, SharedObjectDescription sd) throws IOException
- Overrides:
sendCreate
in classSOContainer
- Throws:
IOException
-
sendCreateResponse
protected void sendCreateResponse(ID homeId, ID sharedObjectId, Throwable t, long identifier) throws IOException
- Overrides:
sendCreateResponse
in classSOContainer
- Throws:
IOException
-
sendCreateResponseSharedObjectMessage
protected void sendCreateResponseSharedObjectMessage(ID toContainerId, ID fromSharedObject, Throwable t, long ident) throws IOException
- Overrides:
sendCreateResponseSharedObjectMessage
in classSOContainer
- Throws:
IOException
-
sendCreateSharedObjectMessage
protected ID[] sendCreateSharedObjectMessage(ID toContainerId, SharedObjectDescription sd) throws IOException
- Overrides:
sendCreateSharedObjectMessage
in classSOContainer
- Throws:
IOException
-
sendDispose
protected void sendDispose(ID toContainerId, ID sharedObjectId) throws IOException
- Overrides:
sendDispose
in classSOContainer
- Throws:
IOException
-
sendDisposeSharedObjectMessage
protected void sendDisposeSharedObjectMessage(ID toContainerId, ID fromSharedObject) throws IOException
- Overrides:
sendDisposeSharedObjectMessage
in classSOContainer
- Throws:
IOException
-
sendMessage
protected void sendMessage(ID toContainerId, ID sharedObjectId, Object message) throws IOException
- Overrides:
sendMessage
in classSOContainer
- Throws:
IOException
-
sendSharedObjectMessage
protected void sendSharedObjectMessage(ID toContainerId, ID fromSharedObject, Serializable data) throws IOException
- Overrides:
sendSharedObjectMessage
in classSOContainer
- Throws:
IOException
-
disconnect
protected void disconnect(Throwable exception)
-
processDisconnect
protected void processDisconnect(DisconnectEvent evt)
- Specified by:
processDisconnect
in classSOContainer
-
processAsynch
protected void processAsynch(AsynchEvent evt) throws IOException
- Overrides:
processAsynch
in classSOContainer
- Parameters:
evt
- event- Throws:
IOException
- not thrown by this implementation.
-
processSynch
protected Serializable processSynch(SynchEvent evt) throws IOException
- Overrides:
processSynch
in classSOContainer
- Throws:
IOException
-
isConnected
protected boolean isConnected()
-
isConnecting
protected boolean isConnecting()
-
-