/*
* This file is part of JGAP.
*
* JGAP offers a dual license model containing the LGPL as well as the MPL.
*
* For licensing information please see the file license.txt included with JGAP
* or have a look at the top of class org.jgap.Chromosome which representatively
* includes the JGAP license policy applicable for any file delivered with JGAP.
*/
package org.jgap.distr;
/**
* Worker implementation. A worker receives commands from an IMaster instance
* and returns results to the master. A worker can receive commands even when
* it is working but it can only work on one task at a time.
*
* @author Klaus Meffert
* @since 2.4
*/
public class Worker
implements IWorker {
/** String containing the CVS revision. Read out via reflection!*/
private final static String CVS_REVISION = "$Revision: 1.8 $";
/**
* Display name, only textual information.
*/
private String m_displayName;
/**
* Listener to requests from the (one and only) master of this worker
* (=KKMultiServerThread resp. KKMultiServer (to make it more sophisticated
* and allow multiple requests from the master at once))
*/
private MasterListener m_masterListener;
/**
* Reference to master for calling him back.
*/
private MasterInfo m_master;
/**
* Construct the worker and tell him who his master is.
* @param a_displayName name for imformative purpose
* @param a_master the master of this worker
* @param a_masterListener listener for requests from master
*
* @author Klaus Meffert
* @since 2.4
*/
public Worker(final String a_displayName, final MasterInfo a_master,
final MasterListener a_masterListener) {
m_displayName = a_displayName;
m_master = a_master;
m_masterListener = a_masterListener;
}
/**
* @return display name of the worker
*
* @author Klaus Meffert
* @since 2.4
*/
public String getDisplayName() {
return m_displayName;
}
/**
* Lets a server send a command to process to the worker
* @param a_command the command to process
* @return status message
*
* @author Klaus Meffert
* @since 2.4
*/
public Object sendCommand(final WorkerCommand a_command) {
/**@todo this should be moved to a thread*/
/**@todo implement:
* currently working? if yes, add to queue (if queue not full)
* if no: start work*/
return null;
}
/**
* @return current status of the entity
*
* @author Klaus Meffert
* @since 2.4
*/
public Object getStatus() {
/**@todo implement:
* idle
* starting
* receiving task
* working
* sending result
* stopping
* stopped*/
return null;
}
/**
* Forces the worker to pause its work (can be resumed)
* @return status message
*
* @author Klaus Meffert
* @since 2.4
*/
public Object pause() {
/**@todo implement:
* able to pause resp. in work?*/
return null;
}
/**
* Forces the worker to stop its work (cannot be resumed)
* @return status message
*
* @author Klaus Meffert
* @since 2.4
*/
public Object stop() {
/**@todo implement:
* able to stop resp. in work?*/
return null;
}
/**
* Forces the worker to resume a paused work
* @return status message
*
* @author Klaus Meffert
* @since 2.4
*/
public Object resume() {
/**@todo implement:
* able to resum resp. paused?*/
return null;
}
}