java.lang.Object
org.refcodes.component.AbstractConnectableAutomaton
org.refcodes.remoting.RemoteClientImpl
- All Implemented Interfaces:
org.refcodes.component.Closable
,org.refcodes.component.Closable.CloseAutomaton
,org.refcodes.component.ClosedAccessor
,org.refcodes.component.Component
,org.refcodes.component.ConnectableComponent
,org.refcodes.component.ConnectableComponent.ConnectableAutomaton
,org.refcodes.component.ConnectionComponent<org.refcodes.io.DatagramTransceiver<Serializable>>
,org.refcodes.component.ConnectionComponent.ConnectionAutomaton<org.refcodes.io.DatagramTransceiver<Serializable>>
,org.refcodes.component.ConnectionOpenable<org.refcodes.io.DatagramTransceiver<Serializable>>
,org.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton<org.refcodes.io.DatagramTransceiver<Serializable>>
,org.refcodes.component.ConnectionStatusAccessor
,org.refcodes.component.Destroyable
,org.refcodes.component.OpenedAccessor
,org.refcodes.mixin.BusyAccessor
,org.refcodes.mixin.Clearable
,org.refcodes.mixin.EmptyAccessor
,Remote
,RemoteClient
,org.refcodes.struct.Containable
public class RemoteClientImpl
extends org.refcodes.component.AbstractConnectableAutomaton
implements RemoteClient
Abstract implementation of the
RemoteClient
's base functionality.-
Nested Class Summary
Nested classes/interfaces inherited from interface org.refcodes.mixin.BusyAccessor
org.refcodes.mixin.BusyAccessor.BusyMutator, org.refcodes.mixin.BusyAccessor.BusyProperty
Nested classes/interfaces inherited from interface org.refcodes.component.Closable
org.refcodes.component.Closable.CloseAutomaton, org.refcodes.component.Closable.CloseBuilder<B extends org.refcodes.component.Closable.CloseBuilder<B>>
Nested classes/interfaces inherited from interface org.refcodes.component.ClosedAccessor
org.refcodes.component.ClosedAccessor.ClosedMutator, org.refcodes.component.ClosedAccessor.ClosedProperty
Nested classes/interfaces inherited from interface org.refcodes.component.ConnectableComponent
org.refcodes.component.ConnectableComponent.ConnectableAutomaton
Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionComponent
org.refcodes.component.ConnectionComponent.ConnectionAutomaton<CON extends Object>, org.refcodes.component.ConnectionComponent.ConnectionComponentBuilder<CON extends Object,
B extends org.refcodes.component.ConnectionComponent.ConnectionComponentBuilder<CON, B>> Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionOpenable
org.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton<CON extends Object>, org.refcodes.component.ConnectionOpenable.ConnectionOpenBuilder<CON extends Object,
B extends org.refcodes.component.ConnectionOpenable.ConnectionOpenBuilder<CON, B>> Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionStatusAccessor
org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusMutator, org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusProperty
Nested classes/interfaces inherited from interface org.refcodes.component.Destroyable
org.refcodes.component.Destroyable.DestroyAutomaton
Nested classes/interfaces inherited from interface org.refcodes.mixin.EmptyAccessor
org.refcodes.mixin.EmptyAccessor.EmptyMutator, org.refcodes.mixin.EmptyAccessor.EmptyProperty
Nested classes/interfaces inherited from interface org.refcodes.component.OpenedAccessor
org.refcodes.component.OpenedAccessor.OpenedMutator, org.refcodes.component.OpenedAccessor.OpenedProperty
Nested classes/interfaces inherited from interface org.refcodes.remoting.RemoteClient
RemoteClient.ProxyControl
-
Constructor Summary
ConstructorDescriptionInstantiates a new remote client impl.RemoteClientImpl
(ExecutorService aExecutorService) Instantiates a new remote client impl. -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
void
close()
protected void
close
(CloseConnectionMessage aJob) Closes theRemote
upon a receivedCloseConnectionMessage
.void
destroy()
protected void
Thedigest(Message)
method is invoked in order to trigger processing of the providedMessage
, e.g. start execution depending on theMessage
instance being provided from the outside.protected void
For testing purposes, any job can be manually pushed into the job process to the receiver.protected void
fromSender
(Message aJob) Provides anMessage
from another sender to this receiver.protected ExecutorService
Hook method for retrieving theExecutorService
.<T> T
Gets the proxy.boolean
Returns true if there is at least one proxy of the given type.boolean
Returns true if the provided proxy is contained inside theRemoteClient
.boolean
isBusy()
protected boolean
Hook to support theDestroyable
interface, determines the destroyed status property; set to true whenDestroyable.destroy()
is called.boolean
isEmpty()
boolean
isOpenable
(org.refcodes.io.DatagramTransceiver<Serializable> aConnection) protected void
onClosed()
Hook when the connection has been closed.protected void
onOpened()
Hook when the connection has been opened.protected void
onProxyPublished
(Object aProxy) Hook when a proxy has been published.protected void
onProxySignedOff
(Object aProxy) Hook when a proxy has been signed-off.protected void
onPublishProxy
(Class<?> aType) Hook when a proxy is about to be published.void
open
(org.refcodes.io.DatagramTransceiver<Serializable> aTransceiver) proxies()
Returns a read-only iterator containing all the proxy objects previously being published.boolean
signOffProxy
(Object aProxy) Signs off an instance previously published using the publishClassDescriptor() method.int
size()
protected void
toReceiver
(Message aJob) Forwards anMessage
from this sender to another receiver.Methods inherited from class org.refcodes.component.AbstractConnectableAutomaton
getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, setConnectionStatus
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUnchecked
Methods inherited from interface org.refcodes.component.Closable.CloseAutomaton
isClosable
Methods inherited from interface org.refcodes.component.ClosedAccessor
isClosed
Methods inherited from interface org.refcodes.component.ConnectionOpenable
open, openUnchecked
Methods inherited from interface org.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton
isOpenable
Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor
getConnectionStatus, isOpened
-
Constructor Details
-
RemoteClientImpl
public RemoteClientImpl()Instantiates a new remote client impl. -
RemoteClientImpl
Instantiates a new remote client impl.- Parameters:
aExecutorService
- the executor service
-
-
Method Details
-
clear
public void clear()- Specified by:
clear
in interfaceorg.refcodes.mixin.Clearable
-
close
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Throws:
IOException
-
isBusy
public boolean isBusy()- Specified by:
isBusy
in interfaceorg.refcodes.mixin.BusyAccessor
-
hasProxy
Returns true if the provided proxy is contained inside theRemoteClient
.- Specified by:
hasProxy
in interfaceRemoteClient
- Parameters:
proxy
- The proxy to be tested if it is contained inside theRemoteClient
.- Returns:
- True if the given proxy is contained inside the
RemoteClient
.
-
getProxy
Gets the proxy.- Specified by:
getProxy
in interfaceRemoteClient
- Type Parameters:
T
- the generic type- Parameters:
aType
- the type- Returns:
- the proxy
- Throws:
AmbiguousProxyException
- the ambiguous proxy exceptionNoSuchProxyException
- the no such proxy exception
-
hasProxy
Returns true if there is at least one proxy of the given type.- Specified by:
hasProxy
in interfaceRemoteClient
- Parameters:
aType
- the type- Returns:
- True in case there is at least one proxy of the given type.
-
proxies
Returns a read-only iterator containing all the proxy objects previously being published. Use the sign-off methods in order to remove a published proxy object.- Specified by:
proxies
in interfaceRemoteClient
- Returns:
- An iterator containing the published proxy objects.
-
isEmpty
public boolean isEmpty()- Specified by:
isEmpty
in interfaceorg.refcodes.mixin.EmptyAccessor
-
signOffProxy
Signs off an instance previously published using the publishClassDescriptor() method.- Specified by:
signOffProxy
in interfaceRemoteClient
- Parameters:
aProxy
- An object of type GenericInstanceDescriptor containing the information needed to sign-off an instance.- Returns:
- True is returned if the instance described by the proxy object could be signed off, else false is returned
- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
size
public int size()- Specified by:
size
in interfaceorg.refcodes.struct.Containable
-
destroy
public void destroy()- Specified by:
destroy
in interfaceorg.refcodes.component.Destroyable
-
doSendJob
For testing purposes, any job can be manually pushed into the job process to the receiver.- Parameters:
aJob
- The job to be pushed to the receiver.- Throws:
IOException
- Thrown in case the operation failed due to an I/O malfunction such as the input- or output-connection (of an input- and output-connection pair) is not available or being disconnected.
-
digest
Thedigest(Message)
method is invoked in order to trigger processing of the providedMessage
, e.g. start execution depending on theMessage
instance being provided from the outside. ARemoteClient
digests such aMessage
different than aRemoteServer
. This method is inspired by theDigester.digest(Object)
method. -
close
Closes theRemote
upon a receivedCloseConnectionMessage
. Some client TID might be considered in order to determine whether to close all or just one of many connections. This default implementation callsClosable.close()
(setting theConnectionStatus
to beConnectionStatus.CLOSED
); advanced implementations just closing dedicated connections may keep theRemote
itself open (and skip callingClosable.close()
and close only a dedicated connection identified by the Meta-Data of theCloseConnectionMessage
.- Parameters:
aJob
- TheCloseConnectionMessage
being received for closing the connection.
-
onPublishProxy
Hook when a proxy is about to be published.- Parameters:
aType
- The type to be stored by the property.- Throws:
org.refcodes.exception.VetoException
- Thrown to signal that an operation is being vetoed by a third party observing the invocation of the given operation.
-
onProxyPublished
Hook when a proxy has been published.- Parameters:
aProxy
- The proxy to being published.
-
onProxySignedOff
Hook when a proxy has been signed-off.- Parameters:
aProxy
- The proxy which has been signed-off.
-
isOpenable
- Specified by:
isOpenable
in interfaceorg.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton<org.refcodes.io.DatagramTransceiver<Serializable>>
-
open
- Specified by:
open
in interfaceorg.refcodes.component.ConnectionOpenable<org.refcodes.io.DatagramTransceiver<Serializable>>
- Throws:
IOException
-
toReceiver
Forwards anMessage
from this sender to another receiver. A sub-class invokes this method when it sends anMessage
to the receiver counterpart. The communication path is to be implemented by the sub-class.- Parameters:
aJob
- theMessage
to be forwarded to this receiver from the sender counterpart.- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
fromSender
Provides anMessage
from another sender to this receiver. A sub-class invokes this method when it receives anMessage
from a sender counterpart. The communication path is to be implemented by the sub-class.- Parameters:
aJob
- theMessage
to be forwarded to this receiver from the sender counterpart.
-
getExecutorService
Hook method for retrieving theExecutorService
.- Returns:
- The
ExecutorService
as used by this implementation.
-
isDestroyed
protected boolean isDestroyed()Hook to support theDestroyable
interface, determines the destroyed status property; set to true whenDestroyable.destroy()
is called.- Returns:
- The destroyed status property.
-
onOpened
protected void onOpened()Hook when the connection has been opened. -
onClosed
protected void onClosed()Hook when the connection has been closed.
-