public class CommunityComputingServer
extends java.lang.Object
CommunityComputingServerInterface.| Constructor and Description |
|---|
CommunityComputingServer(java.lang.Class<?> communityClass,
int numIterations,
long progressPeriod,
java.util.concurrent.TimeUnit timeUnit)
Создать экземпляр сервера.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addDataHandler(DataHandler dataHandler)
Добавить обработчик данных.
|
Community |
createCommunity()
Создать новое сообщество.
|
long |
getProgressPeriod() |
java.lang.String |
getState() |
int |
nextIter(int nodeId) |
void |
processException(int nodeId,
java.lang.Exception e)
Обработать исключительную ситуацию, возникшую на данном вычислительном узле.
|
void |
processResult(int iter,
int observerId,
java.io.Serializable result)
Обработать результат вычислений.
|
void |
progress(int nodeId,
int iter,
double progress,
long numRandoms)
Сообщить серверу о том, что вычисление итерации завершено.
|
int |
registerNode()
Зарегистрировать новый вычислительный узел.
|
void |
startComputing(int numThreads)
Вычислить все итерации, которые предлагает этот сервер.
|
void |
startServer()
Опубликовать этот сервер в реестре удалённых объектов.
|
public CommunityComputingServer(java.lang.Class<?> communityClass,
int numIterations,
long progressPeriod,
java.util.concurrent.TimeUnit timeUnit)
throws PmException
communityClass - класс сообщества.numIterations - количество итераций, которые требуется посчитать.progressPeriod - периодичность вызова метода progress(int, int, double, long) вычислителями (ms).timeUnit - единица измерения времени для параметра progressPeriod.PmException - если communityClass не является наследником от Community или не имеет конструктора по умолчанию.public final int registerNode()
public long getProgressPeriod()
CommunityComputingServerInterface.progress(int, int, double, long) вычислителями (ms).public final int nextIter(int nodeId)
nodeId - идентификатор вычислительного узла.public final void progress(int nodeId,
int iter,
double progress,
long numRandoms)
nodeId - идентификатор вычислительного узла.iter - номер итерации.progress - прогресс для данной итерации: отношение прошедшего времени в модели к общему
времени моделирования, если прогресс больше или равен 1.0, то считается, что итерация завершена.numRandoms - число использованных случайных чисел.public java.lang.String getState()
public Community createCommunity() throws PmException
PmException - если не удалось создать сообщество.public void processResult(int iter,
int observerId,
java.io.Serializable result)
iter - номер итерации.observerId - номер наблюдателя.result - результат наблюдений за итерацией.public void processException(int nodeId,
java.lang.Exception e)
nodeId - идентификатор вычислительного узла.e - исключительная ситуация.public void addDataHandler(DataHandler dataHandler)
dataHandler - обработчик данных.public void startServer()
throws java.rmi.RemoteException,
java.rmi.AlreadyBoundException
java.rmi.RemoteException - если не удалось получить реестр удалённых объектов.java.rmi.AlreadyBoundException - если имя объекта в реестре уже занято.public void startComputing(int numThreads)
numThreads - число вычислительных потоков; если numThreads <= 0,
то число вычислительных потоков устанавливается равным числу доступных вычислительных ядер.