6. Подсистема "Транспорты" (TTransportS)
Подсистема "Транспорты" представлена объектом TTransportS, который содержит на уровне подсистемы модульные объекты типов транспортов TTypeTransport. Каждый тип транспорта содержит объекты входящих TTransportIn и исходящих TTransportOut транспортов. Общая структура подсистемы приведена на рис. 6.
Рис. 6. Слоистая структура подсистемы транспортов.
Корневой объект модуля подсистемы "Транспорты" содержит информацию о конкретно взятом типе модуля и внешних OpenSCADA хостах/станциях. В рамках отдельно взятого модуля может быть реализована собственная общемодульная функциональность. В общем, для всех модулей, содержатся методы доступа к входящим и исходящим транспортам конкретно взятого модуля.
Объект входящего транспорта TTransportIn предоставляет интерфейс к реализации модульного метода входящего транспорта.
Объект исходящего транспорта TTransportOut предоставляет интерфейс к реализации модульного метода исходящего транспорта.
6.1. Объект подсистемы "Транспорты" (TTransportS)
Данные:
Режимы внешних хостов (enum — ExtHost::Mode):
- User (0) — Пользовательский.
- System (1) — Системный.
- UserSystem (2) — Пользовательский и Системный.
Структура внешних OpenSCADA хостов/станций (class TTransportS::ExtHost):
- ExtHost( const string &iUserOpen, const string &iid, const string &iname = "", const string &itransp = "", const string &iaddr = "", const string &iuser = "", const string &ipass = "", uint8_t iUpRiseLev = 0 ); — Конструктор инициализации структуры.
- string userOpen; — Пользователь, создавший запись про внешний хост/станцию.
- string id; — Идентификатор внешнего хоста/станции.
- string name; — Имя внешнего хоста/станции.
- string transp; — Транспорт, использующийся для доступа к внешнему хосту/станции.
- string addr; — Адрес для транспорта, который используется для доступа к внешнему хосту/станции.
- string user; — Пользователь внешнего хоста/станции.
- string pass; — Пароль пользователя внешнего хоста/станции.
- uint8_t upRiseLev; — Уровень/глубина поднятия внешних станций самого этого хоста/станции.
- int8_t mode; — Режим хоста.
- time_t mdf; — Время модификации.
Публичные методы:
- int subVer( ); — Версия подсистемы.
- void inTrList( vector<string> &ls ); — Полный список входящих транспортов.
- void outTrList( vector<string> &ls ); — Полный список исходящих транспортов.
- string extHostsDB( ); — БД хранения перечня внешних хостов.
- void extHostList( const string &user, vector<ExtHost> &list, bool andSYS = false, int upRiseLev = -1 ); — Список внешних хостов list для пользователя user, включая системные andSYS и уровня поднятия upRiseLev (-1 - начинать с уровня в записи хоста).
- ExtHost extHostGet( const string &user, const string &id, bool andSYS = false ); — Получение информационного объекта внешнего хоста id от имени пользователя user, включая системный andSYS ("*" — строго для системных хостов).
- AutoHD<TTransportOut> extHost( TTransportS::ExtHost host, const string &pref = "" ); — Создание - запрос исходящего транспорта для обслуживания внешнего хоста host с префиксом идентификации узла системы pref.
- void extHostSet( const ExtHost &host, bool andSYS = false ); — Установка внешнего хоста/станции host, включая системный andSYS.
- void extHostDel( const string &user, const string &id, bool andSYS = false ); — Удаление внешнего хоста/станции id от имени пользователя user, включая системный andSYS ("*" — для системных хостов).
- int cntrIfCmd( XMLNode &node, const string &senderPref, const string &user = "" ); — Передача запроса интерфейса управления OpenSCADA node к удалённой станции.
- void subStart( ); — Запуск подсистемы.
- void subStop( ); — Останов подсистемы.
- TElem &inEl( ); — Структура БД входящих транспортов.
- TElem &outEl( ); — Структура БД исходящих транспортов.
- AutoHD<TTypeTransport> at( const string &id ) const; — Обращение/подключение к типу транспорта id.
6.2. Модульный объект типа транспортов (TTypeTransport)
Наследует: | TModule. |
Наследуется: | Корневыми объектами модулей подсистемы "Транспорты". |
Публичные методы:
- void inList( vector<string> &list ) const; — Список входящих транспортов.
- bool inPresent( const string &name ) const; — Проверка на наличие входящего транспорта.
- void inAdd( const string &name, const string &db = "*.*" ); — Добавление входящего транспорта.
- void inDel( const string &name, bool complete = false ); — Удаление входящего транспорта. Возможно полное удаление, включающее и БД, путём установки признака complete.
- AutoHD<TTransportIn> inAt( const string &name ) const; — Подключение к входящему транспорту.
- void outList( vector<string> &list ) const; — Список исходящих транспортов.
- bool outPresent( const string &name ) const; — Проверка на наличие исходящего транспорта.
- void outAdd( const string &name, const string &db = "*.*" ); — Добавление исходящего транспорта.
- void outDel( const string &name, bool complete = false ); — Удаление исходящего транспорта. Возможно полное удаление, включающее и БД, путём установки признака complete.
- AutoHD<TTransportOut> outAt( const string &name ) const; — Подключение к исходящему транспорту.
- TTransportS &owner( ) const; — Подсистема "Транспорты" — владелец типом транспорта.
Защищённые методы:
- virtual TTransportIn *In( const string &name, const string &db ); — Модульный метод создания/открытия нового "Входящего" транспорта.
- virtual TTransportOut *Out( const string &name, const string &db ); — Модульный метод создания/открытия нового "Исходящего" транспорта.
6.3. Объект входящих транспортов (TTransportIn)
Наследует: | TCntrNode, TConfig. |
Наследуется: | Объектами входящих транспортов модулей подсистемы "Транспорты". |
Публичные методы:
- TTransportIn( const string &id, const string &db, TElem *el ); — Инициализирующий конструктор.
- string id( ); — Идентификатор транспорта.
- string workId( ); — Полный идентификатор, включая идентификатор модуля.
- string name( ); — Имя транспорта.
- string dscr( ); — Описание транспорта.
- string addr( ) const; — Адрес.
- string protocol( ); — Связанный транспортный протокол.
- virtual string getStatus( ); — Получение статуса входящего транспорта.
- bool toStart( ); — Признак "Запускать транспорт".
- bool startStat( ) const; — Состояние "Транспорт запущен".
- string DB( ); — Адрес БД транспорта.
- string tbl( ); — Таблица БД транспорта.
- string fullDB( ); — Полное имя таблицы БД транспорта.
- void setName( const string &inm ); — Установка имени транспорта в inm.
- void setDscr( const string &idscr ); — Установка описания транспорта в idscr.
- void setAddr( const string &addr ); — Установка адреса транспорта в addr.
- void setProtocol( const string &prt ); — Установка связного транспортного протокола.
- void setToStart( bool val ); — Установка признака "Запускать транспорт".
- void setDB( const string &vl ); — Установка адреса БД транспорта.
- virtual void start( ); — Запуск транспорта.
- virtual void stop( ); — Останов транспорта.
- virtual int writeTo( const string &sender, const string &data ); — Отправка данных data назад отправителю sender.
- vector<AutoHD<TTransportOut> > assTrs( bool checkForCleanDisabled = false ); — Массив связанных исходящих транспортов, созданных входящим транспортом для типовых запросов к инициатору подключения. Установить checkForCleanDisabled для предварительной проверки и очистки отключенных.
- int logLen( ); — длина лога ВВ.
- void setLogLen( int vl ); — установка длины лога ВВ.
- void pushLogMess( const string &vl ); — поместить сообщение vl в лог в формате "{Message}\n{BinData}".
- TTypeTransport &owner( ) const; — Тип транспорта – владелец входящим транспортом.
Защищённые методы:
- string assTrO( const string &addr ); — Создание связанного исходящего транспорта с адресом addr.
Защищённые атрибуты:
- bool run_st; — Признак "Запущен".
6.4. Объект исходящих транспортов (TTransportOut)
Наследует: | TCntrNode, TConfig. |
Наследуется: | Объектами исходящих транспортов модулей подсистемы "Транспорты". |
Публичные методы:
- TTransportOut( const string &id, const string &db, TElem *el ); — Инициализирующий конструктор.
- string id( ); — Идентификатор транспорта.
- string workId( ); — Полный идентификатор, включая идентификатор модуля.
- string name( ); — Имя транспорта.
- string dscr( ); — Описание транспорта.
- string addr( ) const; — Адрес транспорта.
- virtual string timings( ); — Таймауты транспорта.
- int prm1( ); — Первый резервный параметр.
- int prm2( ); — Второй резервный параметр.
- bool toStart( ); — Признак "Запускать транспорт".
- bool startStat( ) const; — Состояние "Транспорт запущен".
- time_t startTm( ); — Состояние "Время запуска/подключения".
- virtual string getStatus( ); — Получение статуса транспорта.
- string DB( ); — Адрес БД транспорта.
- string tbl( ); — Таблица БД транспорта.
- string fullDB( ); — Полное имя таблицы БД транспорта.
- void setName( const string &inm ); — Установка имени транспорта.
- void setDscr( const string &idscr ); — Установка описания транспорта.
- void setAddr( const string &addr ); — Установка адреса транспорта.
- virtual void setTimings( const string &vl ); — Установка таймаутов транспорта.
- void setPrm1( int vl ); — Установка первого резервного параметра.
- void setPrm2( int vl ); — Установка второго резервного параметра.
- void setToStart( bool val ); — Установка признака "Запускать транспорт".
- void setDB( const string &vl ); — Установка адреса БД транспорта.
- virtual void start( int time = 0 ); — Запуск транспорта с временем подключения time.
- virtual void stop( ); — Останов транспорта.
- virtual int messIO( const char *oBuf, int oLen, char *iBuf = NULL, int iLen = 0, int time = 0 ); — Отправка данных через транспорт. Время ожидания time соединения (в миллисекундах). Отрицательное время time отключает работу транспорта в режиме запрос/ответ и позволяет независимо читать/писать в буфер ВВ, с таймаутом чтения time в абсолютном значении.
- void messProtIO( XMLNode &io, const string &prot ); — Отправка данных в дереве XML in через транспорт, используя транспортный протокол prot.
- int logLen( ); — длина лога ВВ.
- void setLogLen( int vl ); — установка длины лога ВВ.
- void pushLogMess( const string &vl ); — поместить сообщение vl в лог в формате "{Message}\n{BinData}".
- TTypeTransport &owner( ) const; — Тип транспорта – владелец исходящим транспортом.
- ResMtx &reqRes( ); — Запросный ресурс, который должен быть глобально захватываем в протоколах с получением фрагментов.
Защищённые атрибуты:
- bool run_st; — Признак "Запущен".