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
,
то число вычислительных потоков устанавливается равным числу доступных вычислительных ядер.