Обработчик активации сервисов
Обработчик активации сервисов синхронизирует состояние сервиса и сессии на устройстве - именно он производит открытие/закрытие доступа, изменение скорости или других параметров.
Обработчик привязывается к типу устройства и вызывается поочередно от корня дерева устройств до затронутого устройства (при необходимости синхронизировать сервис, привязанный к устройству данного типа или же сессию, начатую на устройстве данного типа).
В поставку модуля Inet входят стандартные реализации для Cisco, Redback, MPD и т.п., производящие интеграцию с соответствующими устройствами. Исходные коды находятся в Управлении динамическим кодом, в пакете ru.bitel.bgbilling.modules.inet.dyn. Данные классы перетираются при обновлении, поэтому для изменения логики класса необходимо расширить его или создать копию, но не изменять его напрямую.
/** * Интерфейс обработчика активации сервисов.<br/> * <pre>Жизненный цикл: * init *  *   connect *     serviceModify *     serviceModify *     serviceCancel *   disconnect *    *   connect *     serviceCreate *     serviceModify *     connectionModify *     serviceModify *     connectionClose *   disconnect * destroy</pre> */public interface ServiceActivator{	/**	 * Инициализация обработчика. Вызывается после создания объекта.	 * @param setup	 * @param moduleId	 * @param device	 * @param deviceType	 * @param config	 * @return	 * @throws Exception	 */	public Object init( Setup setup, int moduleId, InetDevice device, InetDeviceType deviceType, ParameterMap config )	    throws Exception;	/**	 * Утилизация обработчика. Вызывается перед уничтожением объекта.	 * @return	 * @throws Exception	 */	public Object destroy()	    throws Exception;	/**	 * Подключение к устройству для работы с ним.	 * @return	 * @throws Exception	 */	public Object connect()	    throws Exception;	/**	 * Отключение от устройства.	 * @return	 * @throws Exception	 */	public Object disconnect()	    throws Exception;	/**	 * Создание сервиса (по событию добавления или началу периода действия)	 * @param e	 * @return	 * @throws Exception	 */	public Object serviceCreate( ServiceActivatorEvent e )	    throws Exception;	/**	 * Изменение сервиса (подключение/отключение/изменение скорости).	 * Вызывается при изменении набора опций или изменении состояния сервиса	 * @see ServiceActivatorEvent	 * @see {@link ServiceActivatorEvent#getNewState()}	 * @param e	 * @return	 * @throws Exception	 */	public Object serviceModify( ServiceActivatorEvent e )	    throws Exception;	/**	 * Удаление сервиса (по событию удаления или окончания периода действия).	 * @param e	 * @return	 * @throws Exception	 */	public Object serviceCancel( ServiceActivatorEvent e )	    throws Exception;	/**	 * Изменение соединения.	 * Вызывается при изменении набора опции на соединении или при изменении состояния.<br/>	 * Обычно, при {@link ServiceActivatorEvent#getNewState()} == {@link InetServ#STATE_DISABLE} из этого метода происходит вызов метода {@link #connectionClose(ServiceActivatorEvent)}	 * @param e	 * @return	 * @throws Exception	 */	public Object connectionModify( ServiceActivatorEvent e )	    throws Exception;	/**	 * Закрытие (принудительное) соединения.<br/>	 * Обычно вызывается при {@link AccessCodes#TOO_MANY_SESSIONS_ERROR} или из метода {@link #connectionModify(ServiceActivatorEvent)}	 * @param e	 * @return	 * @throws Exception	 */	public Object connectionClose( ServiceActivatorEvent e )	    throws Exception;	/**	 * Обработка старта соединения.	 * @param event	 * @return	 * @throws Exception	 */	public Object onAccountingStart( ServiceActivatorEvent event )	    throws Exception;	/**	 * Обработка стопа соединения.	 * @param event	 * @return	 * @throws Exception	 */	public Object onAccountingStop( ServiceActivatorEvent event )	    throws Exception;}Описание интерфейса ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivator доступно в документации по API.
Параметры работы обработчика активации сервисов (прописываются в конфиге типа устройства или конфиге устройства):
# кол-во задач выполняющихся одним блоком#sa.batch.size=20# время паузы между блоком задач#sa.batch.pause.millis=0# время ожидания завершения асинхронных задачsa.batch.wait.millis=5000# время ожидания новой задачи, до того как отключиться от устройства (вызвать disconnect у ServiceActivator)sa.batch.waitNext.millis=5000# пауза при ошибке синхронизацииsa.error.pause.millis=60000# кол-во ошибок, возникающих подряд, для отправки оповещения (alarm)sa.error.alarm.count=20# кол-во ошибок, возникающих подряд, для отправки задачи в конец очередиsa.error.redelivery.count=100# таймаут задачи, которая не может выполниться из-за ошибок синхронизацииsa.error.redelivery.timeout=86400 sa.device.sync.allPath=Параметры пересинхронизации устройства (например, по определению перезагрузки устройства по uptime, который опрашивает обработчик управления устройством):
# при полной синхронизации устройства - синхронизировать все связанные устройства или только данное#sa.device.sync.allPath=1# при полной синхронизации устройства нужно ли вызывать onAccountingStart для активных сессий#sa.device.sync.onAccountingStart=0# нужно ли при полной синхронизации устройства вызывать сначала serviceCancel и только потом serviceCreate#sa.device.sync.cancelBeforeCreate=1# вызов всегда connectionModify вместо connectionClose#sa.connection.modifyInsteadClose=0# вызов всегда connectionClose вместо connectionModify#sa.connection.closeInsteadModify=0