Обработчик активации сервисов синхронизирует состояние сервиса и сессии на устройстве. Именно он производит открытие/закрытие доступа, изменение скорости или других параметров.
Обработчик привязывается к типу устройства и вызывается поочередно от корня дерева устройств до затронутого устройства (при необходимости синхронизировать сервис, привязанный к устройству данного типа или же сессию, начатую на устройстве данного типа).
В поставку модуля 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.