Сервер:Пример простого драйвера-передатчика

Материал из ЛОКАРУС
Перейти к: навигация, поиск
import locarus.common.Broadcast;
import locarus.common.interfaces.Counter;
import locarus.common.interfaces.TransmitterAbstract;
import locarus.parser.Navigation;

/**
 *
 * @author Дмитрий Г. Кузнецов
 *
 * Используются библиотеки входящие в состав сервера -  <code>
 * locarus-common.jar
 * locarus-parser.jar
 * log4j
 * </code>
 *
 */
public class trsDemo extends TransmitterAbstract {

    /**
     * Вызывается один раз при регистрации драйвера трансмиттера при старте
     * сервера. Инициализируем переменные
     *
     * @return true - драйвер регистрируется и работает, false - регистрация
     * отменяется
     */
    public trsDemo() {
        version = 0x0100 + Integer.parseInt("$LastChangedRevision: 324 $".replace("$LastChangedRevision:", "").replace("$", "").trim());
        name = "Demo";
        description = "<b>Демонстрационный драйвер - трансмитер</b><br>"
                + "Принимает оперативные данные с приборов и просто сохраняет их в лог-файле";

    }

    /**
     * Функция обработчик данных
     *
     * @param counter сохраняемый в базе объект, связанный с транслятором. может
     * использоваться в качестве глобального счетчика
     * @param o блок оперативных данных в формате определяемом типом accept
     * @param parameters строка параметров из конфигурации трансмитера,
     * задаваемая на уровне сервера
     * @return true если блок обработан, false в слуае необходимости повторного
     * получения блока драйвером
     */
    @Override
    public boolean run(Counter counter, Object o, String parameters) {

        if (counter.val() == null) {
            counter.val(new Integer(0));
        }

        for (Navigation n : (Navigation[]) o) {
            log.info(
                    "#" + (Integer) counter.val() + " "
                    + "IMEI:" + n.objectID + ", "
                    + "type:" + n.objectType + ", "
                    + "time:" + n.time + ", "
                    + "lat:" + n.Coords.getLat() + ", "
                    + "lon:" + n.Coords.getLon());
        }

        counter.val((Integer) counter.val() + 1);
        return true;
    }
    
    /**
     * Тип принимаемых данных. Функция должна возвращать true на один из
     * запрашиваемых типов:
     * <ul>
     * <li>SIMPLE - получает последовательность объектов Navigation</li>
     * <li>ALERT - получает объект Device который активировал событие в cиcтеме</li>
     * </ul>
     *
     * @param type значение типа данных
     * @return true если драйвер принимает этот тип
     */
    @Override
    public boolean accept(String type) {
        return Broadcast.SIMPLE.equals(type);
    }
    
}
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты