sds.service
Class Manager

java.lang.Object
  extended by sds.DistributedObject
      extended by sds.DistributedServerObject
          extended by sds.service.Manager

public abstract class Manager
extends DistributedServerObject

Server-oriented distributed object to be instantiated by the user-defined distributed system manager. Registers a set of participating Daemon distributed objects, sends user-defined distributed objects' bytecodes and keeps the latter's references

Author:
ncottin
See Also:
DistributedObject

Constructor Summary
Manager(boolean requiresSignature)
           Creates a manager with no registered daemon nor distributed objects references.
 
Method Summary
 void clearReferences()
           
 boolean clearReferences(java.lang.Class<? extends DistributedObject> distObj)
           
 java.util.Collection<Reference> getDistributedObjectReferences(java.lang.Class<? extends DistributedObject> distObj)
           
 java.util.Collection<Reference> getRegisteredDaemons()
           Gets the registered daemons references
 java.util.Collection<java.lang.Class<? extends DistributedObject>> getRegisteredDistributedObjects()
           
 boolean hasRegisteredDistributedObjects()
           
 boolean isRegistered(java.lang.Class<? extends DistributedObject> distObj)
           
 java.util.Collection<Reference> kill(java.lang.Class<? extends DistributedObject> id, boolean block)
           
 java.util.Collection<Reference> killAll(boolean block)
           
 boolean receive(Message msg)
           Defines the server behavior when a message is received
abstract  boolean recv(Message msg)
           
 java.util.Collection<Reference> register(java.lang.Class<? extends DistributedObject> distObj, int nbInstances, boolean block, java.util.Collection<Reference> daemons)
           
 java.util.Collection<Reference> register(java.lang.Class<? extends DistributedObject> distObj, int nbInstances, boolean block, Reference... daemons)
           
 boolean registerDaemons(java.util.Collection<Reference> daemons)
           
 boolean registerDaemons(Reference... daemons)
           
 boolean registerDaemons(java.net.URL... locations)
           Retrieves all daemons references from a URL.
 void removeRegisteredDaemons()
           Removes all registered daemons references
 boolean removeRegisteredDaemons(java.util.Collection<Reference> daemons)
           Removes the given collection of daemons references from the registered references
 boolean removeRegisteredDaemons(Reference... daemons)
           Removes the given list of daemons references from the registered references
 
Methods inherited from class sds.DistributedServerObject
execute, isSignatureRequired, processError, run, runsAsServer, terminate, terminateServer
 
Methods inherited from class sds.DistributedObject
createReference, deliver, deliver, getExpectedResponseInfo, getManager, getReference, run, setDefaultReference, setManager, setReference
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Manager

public Manager(boolean requiresSignature)

Creates a manager with no registered daemon nor distributed objects references. This manager holds no associated reference

Parameters:
requiresSignature - true if all incoming non digitally signed messages must be rejected
Method Detail

registerDaemons

public final boolean registerDaemons(java.net.URL... locations)

Retrieves all daemons references from a URL. This URL must point to a list of other URLs leading to daemons references. These references must be created by means of Reference.toString()

Parameters:
locations - The URLs leading to the list of daemons' references URLs
Returns:
True if at least one invokable reference could be obtained from the given URL. False is returned either if the provided URL list is not valid (null or empty) or if all referenced URLs are invalid (including null values)

registerDaemons

public final boolean registerDaemons(Reference... daemons)

registerDaemons

public final boolean registerDaemons(java.util.Collection<Reference> daemons)

getRegisteredDaemons

public final java.util.Collection<Reference> getRegisteredDaemons()

Gets the registered daemons references

Returns:
A non-null (but possibly empty) collection of invokable references (that should correspond to daemons)
See Also:
registerDaemons(URL...), registerDaemons(Reference...)

removeRegisteredDaemons

public final void removeRegisteredDaemons()

Removes all registered daemons references


removeRegisteredDaemons

public final boolean removeRegisteredDaemons(Reference... daemons)

Removes the given list of daemons references from the registered references

Parameters:
daemons - Any list of references
Returns:
True only if at least one reference was removed

removeRegisteredDaemons

public final boolean removeRegisteredDaemons(java.util.Collection<Reference> daemons)

Removes the given collection of daemons references from the registered references

Parameters:
daemons - Any collection of references
Returns:
True only if at least one reference was removed

receive

public final boolean receive(Message msg)
                      throws SdsException
Description copied from class: DistributedServerObject

Defines the server behavior when a message is received

Specified by:
receive in class DistributedServerObject
Parameters:
msg - received message. Must not be null (no checking is necessary when implementing this operation)
Returns:
true if request message content is successfully handled
Throws:
SdsException - an error occurred when retrieving information from the message (or cast)

recv

public abstract boolean recv(Message msg)
                      throws SdsException
Throws:
SdsException

register

public final java.util.Collection<Reference> register(java.lang.Class<? extends DistributedObject> distObj,
                                                      int nbInstances,
                                                      boolean block,
                                                      Reference... daemons)
                                               throws SdsException
Throws:
SdsException

register

public final java.util.Collection<Reference> register(java.lang.Class<? extends DistributedObject> distObj,
                                                      int nbInstances,
                                                      boolean block,
                                                      java.util.Collection<Reference> daemons)
                                               throws SdsException
Throws:
SdsException

killAll

public final java.util.Collection<Reference> killAll(boolean block)

kill

public final java.util.Collection<Reference> kill(java.lang.Class<? extends DistributedObject> id,
                                                  boolean block)

hasRegisteredDistributedObjects

public final boolean hasRegisteredDistributedObjects()

isRegistered

public final boolean isRegistered(java.lang.Class<? extends DistributedObject> distObj)

getRegisteredDistributedObjects

public final java.util.Collection<java.lang.Class<? extends DistributedObject>> getRegisteredDistributedObjects()

getDistributedObjectReferences

public final java.util.Collection<Reference> getDistributedObjectReferences(java.lang.Class<? extends DistributedObject> distObj)

clearReferences

public final void clearReferences()

clearReferences

public final boolean clearReferences(java.lang.Class<? extends DistributedObject> distObj)