6.1. Обработчик активации сервисов

Обработчик активации сервисов синхронизирует состояние сервиса и сессии на устройстве. Именно он производит открытие/закрытие доступа, изменение скорости или других параметров.

Обработчик привязывается к типу устройства и вызывается поочередно от корня дерева устройств до затронутого устройства (при необходимости синхронизировать сервис, привязанный к устройству данного типа или же сессию, начатую на устройстве данного типа).

Внимание

В поставку модуля 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.