Interface ISharedObjectContext
-
- All Superinterfaces:
org.eclipse.core.runtime.IAdaptable
- All Known Implementing Classes:
SOContext
public interface ISharedObjectContext extends org.eclipse.core.runtime.IAdaptable
Context reference provided to all ISharedObjects upon initialization. Implementers of this interface provide a runtime context for ISharedObject instances. Upon initialization within a container (seeISharedObject.init(ISharedObjectConfig)
, ISharedObject instances can access an instance of this context by callingISharedObjectConfig.getContext()
. They then can have access to the functions provided by this context object for use in implementing their behavior.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
connect(ID targetID, IConnectContext connectContext)
(non-Javadoc)void
disconnect()
(non-Javadoc)ID
getConnectedID()
(non-Javadoc)Namespace
getConnectNamespace()
Get the Namespace instance that defines the ID type expected by the remote target containerID[]
getGroupMemberIDs()
(non-Javadoc)ID
getLocalContainerID()
Get the local container instance's IDMap<String,?>
getLocalContainerProperties()
Get local container properties that it wishes to expose to shared object accessIQueueEnqueue
getQueue()
Get the IQueueEnqueue instance associated with this ISharedObject.ISharedObjectManager
getSharedObjectManager()
Get the ISharedObjectManager for this contextboolean
isActive()
boolean
isGroupManager()
(non-Javadoc)void
sendCreate(ID targetID, ReplicaSharedObjectDescription sd)
Send message to create a remote instance of an ISharedObject with the same ID as this instance.void
sendCreateResponse(ID targetID, Throwable throwable, long identifier)
Send create response back to an ISharedObject with the same ID as this instance.void
sendDispose(ID targetID)
Send message to dispose of a remote instance of the ISharedObject with same ID as this instance.void
sendMessage(ID targetID, Object data)
Send arbitrary message to remote instance of the ISharedObject with same ID as this instance.
-
-
-
Method Detail
-
isActive
boolean isActive()
-
getLocalContainerID
ID getLocalContainerID()
Get the local container instance's ID- Returns:
- the ID of the enclosing container
-
getSharedObjectManager
ISharedObjectManager getSharedObjectManager()
Get the ISharedObjectManager for this context- Returns:
- ISharedObjectManager the shared object manager instance for this container. Null if none available.
-
getQueue
IQueueEnqueue getQueue()
Get the IQueueEnqueue instance associated with this ISharedObject. If the given container provides a queue for this ISharedObject, this method will return a IQueueEnqueue reference to the appropriate queue.- Returns:
- IQueueEnqueue instance if an active queue is associated with this ISharedObject. If no active queue is associated with the ISharedObject, returns null.
-
connect
void connect(ID targetID, IConnectContext connectContext) throws ContainerConnectException
(non-Javadoc)- Throws:
ContainerConnectException
- See Also:
IContainer.connect(ID,IConnectContext)
-
disconnect
void disconnect()
(non-Javadoc)- See Also:
IContainer.disconnect()
-
getConnectedID
ID getConnectedID()
(non-Javadoc)- See Also:
IContainer.getConnectedID()
-
isGroupManager
boolean isGroupManager()
(non-Javadoc)- See Also:
IReliableContainer.isGroupManager()
-
getGroupMemberIDs
ID[] getGroupMemberIDs()
(non-Javadoc)- See Also:
IReliableContainer.getGroupMemberIDs()
-
sendCreate
void sendCreate(ID targetID, ReplicaSharedObjectDescription sd) throws IOException
Send message to create a remote instance of an ISharedObject with the same ID as this instance. This method allows ISharedObject instances (with a reference to a valid ISharedObjectContext) to send messages to remote containers asking them to create an instance of a new ISharedObject. The given ReplicaSharedObjectDescription provides the specification of the new object.- Parameters:
targetID
- the ID of the remote that is the target of the create request. If this parameter is null, the request is assumed to be made of all currently in the given group (excepting the local container).sd
- the ReplicaSharedObjectDescription describing the class, constructor and other properties to be associated with the new instance- Throws:
IOException
- thrown if message cannot be sent by container
-
sendCreateResponse
void sendCreateResponse(ID targetID, Throwable throwable, long identifier) throws IOException
Send create response back to an ISharedObject with the same ID as this instance. This method allows ISharedObject instances (with a reference to a valid ISharedObjectContext) to send messages to remote containers asking them to deliver the create response status back to the ISharedObject.- Parameters:
targetID
- the ID of the target that is to receive this responsethrowable
- a throwable associated with the creation. Null means that no exception occurredidentifier
- the identifier used in the original create message (in the shared object description)- Throws:
IOException
- thrown if the create response cannot be sent
-
sendDispose
void sendDispose(ID targetID) throws IOException
Send message to dispose of a remote instance of the ISharedObject with same ID as this instance. This method allows ISharedObject instances to control the destruction of remote replicas.- Parameters:
targetID
- the ID of the remote that is the target of the dispose request. If this parameter is null, the request is assumed to be made of all remotes currently in the given group (excepting the local container).- Throws:
IOException
- thrown if message cannot be sent by container, or if data cannot be serialized
-
sendMessage
void sendMessage(ID targetID, Object data) throws IOException
Send arbitrary message to remote instance of the ISharedObject with same ID as this instance. This method allows ISharedObject instances to send arbitrary data to one or more remote replicas of this ISharedObject.- Parameters:
targetID
- the ID of the remote that is the target for the sendMessage. If this parameter is null, the message is sent to the entire group membership all remote containers currently in the given group (excepting the local container).data
- arbitrary message object. The allowable types of this parameter are dependent upon the type of the underlying implementing container- Throws:
IOException
- thrown if message cannot be sent by container, or if data cannot be serialized
-
getConnectNamespace
Namespace getConnectNamespace()
Get the Namespace instance that defines the ID type expected by the remote target container- Returns:
- Namespace the namespace by the target for a call to connect(). Null if container namespace no longer available
-
-