n
} common.protocol; class MarshallerException extends Exception {MarshallerException (String message)
}
Модуль типових завдань представлений наступними класами. Всі ніжепереісленние типові завдання є за своєю суттю контейнерами для параметрів своєї роботи, тому перерахування методів установки та отримання опущені за своєю тривіальним
package common.protocol.tasks; class SearchInLogTask extends TaskImpl {Date from; Date to; Set lt; String gt; nodes; Set lt; LogType gt; logTypes; boolean isPatternRegExp; String pattern; final static String TYPE= SEARCH_IN_LOG raquo ;;
... common.protocol.tasks; class CustomLoggingTask extends TaskImpl {Date startDate; Set lt; String gt; nodes; LogLevel level; Set lt; String gt; loggers; Collection lt; LogFilter gt; filters; final static String TYPE= CUSTOM_LOGGING raquo ;;
... common.protocol.tasks; class TcpDumpingTask extends TaskImpl {Date startDate; Set lt; String gt; nodes; Nic nic; String filter; final static String TYPE= TCP_DUMPING raquo ;; enum Nic {eth0, eth1, eth2}
... common.protocol.tasks; class AbortTask extends TaskImpl {int abortedTaskId; final static String TYPE= ABORT raquo ;;
... common.protocol.tasks; class QueryDataTask extends TaskImpl {Set lt; String gt; nodes; Set lt; String gt; dataTypes; boolean queryForeignSessions; final static String TYPE= QUERY_DATA raquo ;;
... common.protocol.tasks; class DownloadTask extends TaskImpl {Map lt; String, Collection lt; String gt; gt; paths; final static String TYPE= DOWNLOAD raquo ;;
... common.protocol.tasks; class SmartPacketDecodeTask extends TaskImpl {String encodedPacketContent; final static String TYPE= SMART_PACKET_DECODE raquo ;;
... common.protocol.tasks; class StopServerTask extends TaskImpl {final static String TYPE= STOP_SERVER raquo ;;
... common.protocol.tasks; class Log {enum Level {Debug, Verbose, Status, Warning, Error}; enum FilterType {Message}; class Filter {FilterType type; String value; Filter (FilterType type, String value) void setType (FilterType type) FilterType getType () void setValue (String value)
public String getValue ()
}
}
.3 Реалізація шару «Контролер» клієнтського компонента
Як і в описі реалізації серверного компонента для стислості викладу наведені тільки сигнатури класів (інтерфейсів) c константами, повний вихідний текст програмного комплексу наведений у додатку 2.
Модуль контролера з'єднання представлений наступними класами:
Клас контролера клієнтського компонента. Завдяки наявності статичного методу main має точку входу для запуску клієнтського компонента. Ініціює список модулів компонента і через базовий клас їх запускає, впоследствие при заврешенія роботи компонента - зупиняє ..
package client.controller; class ClientController extends ModulesController {static void main (String [] args)
Overridevoid initModules () throws ModuleException
}
Клас контролера з'єднань. Надає інтерфейс для відстеження стану з'єднання з сервером, установки і завершення соедніенія. Виробляє підписку на оновлення статусу соедіненія.client.controller; class ConnectionController {
private ConnectionMonitor connectionMonitor; void registerHandler (ConnectionUpdateHandler handler) void unregisterHandler (ConnectionUpdateHandler handler) ConnectionContext establishConnection (ConnectionParams connectionParams) void disconnect (ConnectionContext connection)
}
Клас моніторингу з'єднання, реалізує інтерфейс Runnable для виконання в паралельному потоці завдання моніторингу стану з'єднання з вузлом СГД Centera. При зміні стану оповіщає передплатників (підписка відбувається через контролер з'єднання).
package client.controller; class ConnectionMonitor implements Runnable {Collection lt; ConnectionUpdateHandler gt; handlers; ConnectionMonitor () void registerHandler (ConnectionUpdateHandler handler) void unregisterHandler (ConnectionUpdateHandler handler)
Overridevoid run ()
}
Інтерфейс, реалізований передплатником на оновлення стану з'єднання з вузлом СГД.
package client.controller; interface ConnectionUpdateHandler {void handle (ConnectionContext context);
}
Модуль контролера завдань представлений наступними класами:
Клас контролера завдань. Реалізує інтерфейс передплатника на поновлення про стан з'єднання з кластером, щоб управляти процесами відстеження змін стану поточних завдань і створенням нових завдань в залежності від стану з'єднання. Надає інтерфейс для отримання фабрики, що створює нові завдання. Підписує сторонні процеси на поновлення про стан завдань, реально підписка здійснюється у актуализатора завдань.
package client.controller; class TaskController implements ConnectionUpdateHandler {CachedT...