org.altlinux.jabbix
Class ResponseQueue

java.lang.Object
  extended by org.altlinux.jabbix.ZabbixClient
      extended by org.altlinux.jabbix.ResponseQueue
All Implemented Interfaces:
Runnable, MetricTable

public class ResponseQueue
extends ZabbixClient
implements MetricTable, Runnable

Клиент Zabbix-сервера, который отправляет значения метрик на сервер, когда истекает период обновления какой-либо метрики. Содержит обновляемую очередь записей класса JabbixActiveMetric, которые отправляются на сервер и ссылку на другую очередь, в которую возвращаются отправленные метрики.

Когда активная метрика добавляется к очереди счётчик её устаревания сбрасывается. По этой причине, отправка значения на сервер производится в том случае, когда истекает один полный период её устаревания, или когда это происходит для какой-либо другой метрики.


Constructor Summary
ResponseQueue(InetSocketAddress addr, MetricTable returnTable)
          Создаёт очередь с указанными параметрами.
 
Method Summary
 MetricTable getReturnTable()
          Возвращает очередь, в которую помещаются отправленные метрики
 boolean isTerminated()
          Возвращает признак завершения цикла ожидания-отправки.
 void run()
          Запускает цикл ожидания-отправки.
 void terminate()
          Завершает цикл ожидания-отправки для данной очереди.
 void updateMetric(JabbixActiveMetric freshMetric)
          Добавляет указанную метрику в очередь.
 
Methods inherited from class org.altlinux.jabbix.ZabbixClient
getAddress, getHostName, setAddress, setAddress, setAddress, setAddress, setHostName
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResponseQueue

public ResponseQueue(InetSocketAddress addr,
                     MetricTable returnTable)
Создаёт очередь с указанными параметрами. Отдельная таблица возврата используется для хранения отправленных метрик. Механизм с двумя таблицами (внутренняя таблица очереди и возвратная таблица) используется для того, чтобы предотвратить нахождение в очереди метрик, в которых сервер более не заинтересован, в течение всей жизни процесса.

Parameters:
addr - адрес сокета удалённого сервера
returnTable - таблица, в которую возвращаются отправленные записи
Method Detail

run

public void run()
Запускает цикл ожидания-отправки. До тех пор пока цикл не будет завершён посредством вызова ResponseQueue.terminate(), процесс ожидает устаревания любой метрики в очереди, а затем отправляет всё содержимое очереди в виде запроса "agent data". После этого набор отправленных метрик добавляется в возвратную таблицу.

Specified by:
run in interface Runnable
See Also:
JabbixJSONProtocol.sendMetricList(JabbixWriter, String, Collection), ResponseQueue.getReturnTable()

updateMetric

public void updateMetric(JabbixActiveMetric freshMetric)
Добавляет указанную метрику в очередь. Статус активности метрики (см. JabbixActiveMetric.setActive(boolean)) выключается и включается. Данная операция приводит к тому, что счётчик устаревания метрики сбрасывается.

Specified by:
updateMetric in interface MetricTable
Parameters:
freshMetric - метрика, которую нужно добавить
See Also:
JabbixMetric.equals(Object)

getReturnTable

public MetricTable getReturnTable()
Возвращает очередь, в которую помещаются отправленные метрики

Returns:
очерередь, в которую добавляются отправленные метрики

isTerminated

public boolean isTerminated()
Возвращает признак завершения цикла ожидания-отправки.

Returns:
истина, если признак завершения выставлен
See Also:
ResponseQueue.run()

terminate

public void terminate()
Завершает цикл ожидания-отправки для данной очереди.

See Also:
ResponseQueue.run()