NDemia Новости CashMatic Рубли Форум

Интерфейс ICashMaticSessionExtender


см. также: Компоненты расширения CashMaticSession ICashMaticSessionExtender2


Для подключения расширений объекта
CashMaticSession компонент расширения должен реализовывать интерфейс ICashMaticSessionExtender.
(Дополнительные возможности даёт поддержка интерфейса ICashMaticSessionExtender2).
В синтаксисе C++ интерфейс ICashMaticSessionExtender определяется так:
class ICashMaticSessionExtender : public IDispatch
{
	public:
		virtual void CALLBACK
			PreReset(ICashMaticSession* pSession) = 0;
		
		virtual void CALLBACK
			PostReset(ICashMaticSession* pSession) = 0;
		
		virtual void CALLBACK
			PreStart(ICashMaticSession* pSession) = 0;
			
		virtual void CALLBACK
			PostStart(ICashMaticSession* pSession) = 0;
			
		virtual void CALLBACK OnEvent(
				ICashMaticSession* pSession,
				BSTR EventName
			) = 0;
			
		virtual void CALLBACK
			PreFinish(ICashMaticSession* pSession) = 0;
			
		virtual void CALLBACK
			PostFinish(ICashMaticSession* pSession) = 0;
};

// {02A6987B-E3F2-451c-A81D-35D74CCDE78E}
static const IID IID_ICashMaticSessionExtender = { 0x2a6987b, 0xe3f2,
	0x451c, { 0xa8, 0x1d, 0x35, 0xd7, 0x4c, 0xcd, 0xe7, 0x8e } };

Метод ICashMaticSessionExtender::PreReset(ICashMaticSession* pSession) вызывается перед сбросом сеанса. Переменные прошлого сеанса ещё существуют, но после этого вызова больше существовать не будут.

Метод ICashMaticSessionExtender::PostReset(ICashMaticSession* pSession) вызывается после сброса сеанса. Переменных прошлого сеанса уже не существует, началось создание переменных нового сеанса, интерактивного пользователя пока нет.

Метод ICashMaticSessionExtender::PreStart(ICashMaticSession* pSession) вызывается перед началом сеанса (появился интерактивный пользователь). Переменных прошлого сеанса уже не существует, создание переменных нового сеанса ещё не завершено.

Метод ICashMaticSessionExtender::PostStart(ICashMaticSession* pSession) вызывается после начала сеанса. Создание начального набора переменных нового сеанса уже завершено.

Метод ICashMaticSessionExtender::OnEvent(ICashMaticSession* pSession, BSTR EventName) вызывается в результате вызова метода Event объекта CashMaticSession, что доступно скриптам HTML-документа, например:
CashMatic.Session.Event("MyEventName");
(таким образом можно связать скрипт с компонентом расширения, который существует в контексте хост-приложения, и, соответственно, вне HTML-документа)

Метод ICashMaticSessionExtender::PreFinish(ICashMaticSession* pSession) вызывается перед завершением сеанса. Изменение переменных сеанса разрешено, вызов CashMatic.Session.Event разрешён.

Метод ICashMaticSessionExtender::PostFinish(ICashMaticSession* pSession) вызывается после завершения сеанса. Компоненты расширения и скрипты далее не должны изменять переменные сеанса и вызывать CashMatic.Session.Event (текущая версия этому не противодействует, но предполагается, что в дальнейшем это будет запрещено на уровне COM-ошибки)
тел. +7-(916)-129-26-84 (C)opyright: NDemia Ltd, Москва, 2006..2024 ndemia@ndemia.com