6. Подсистема "Транспорты" (TTransportS)
Подсистема «Транспорты» представлена объектом TTransportS, который содержит на уровне подсистемы модульные объекты типов транспортов TTipTransport. Каждый тип транспорта содержит объекты входящих TTransportIn и исходящих TTransportOut транспортов. Общая структура подсистемы приведена на рис. 6.

Рис. 6. Слоистая структура подсистемы транспортов.
Корневой объект модуля подсистемы "Транспорты" содержит информацию о конкретно взятом типе модуля и внешних OpenSCADA хостах/станциях. В рамках отдельно взятого модуля может быть реализована собственная общемодульная функциональность. В общем, для всех модулей, содержатся методы доступа к входящим и исходящим транспортам конкретно взятого модуля.
Объект входящего транспорта TTransportIn предоставляет интерфейс к реализации модульного метода входящего транспорта.
Объект исходящего транспорта TTransportOut предоставляет интерфейс к реализации модульного метода исходящего транспорта.
6.1. Объект подсистемы «Транспорты» (TTransportS)
Данные:
Структура внешних OpenSCADA хостов/станций (class TTransportS::ExtHost):
- ExtHost( const string &iuser_open, const string &iid, const string &iname, const string &itransp, const string &iaddr, const string &iuser, const string &ipass ); - Конструктор инициализации структуры.
- string user_open; - Пользователь, создавший запись про внешний хост/станцию.
- string id; - Идентификатор внешнего хоста/станции.
- string name; - Имя внешнего хоста/станции.
- string transp; - Транспорт, использующийся для доступа к внешнему хосту/станции.
- string addr; - Адрес для транспорта, который используется для доступа к внешнему хосту/станции.
- string user; - Пользователь внешнего хоста/станции.
- string pass; - Пароль пользователя внешнего хоста/станции.
- bool link_ok; - Признак "Связь с внешним хостом/станцией установлена".
Публичные методы:
- int subVer( ); - Версия подсистемы.
- void inTrList( vector<string> &ls ); - Полный список входящих транспортов.
- void outTrList( vector<string> &ls ); - Полный список исходящих транспортов.
- bool sysHost( ); - Признак - "Отображать системные хосты".
- void setSysHost( bool vl ); - Установка признака - "Отображать системные хосты".
- string extHostsDB( ); - БД хранения перечня внешних хостов.
- void extHostList( const string &user, vector<string> &list ); - Список внешних хостов.
- bool extHostPresent( const string &user, const string &id ); - Проверка наличия внешнего хоста <id> от имени пользователя <user> ("*" - для системных хостов).
- AutoHD<TTransportOut> extHost( TTransportS::ExtHost host, const string &pref = "" ); - Создание - запрос исходящего транспорта для обслуживания внешнего хоста <host> с префиксом идентификации узла системы <pref>.
- ExtHost extHostGet( const string &user, const string &id ); - Получение информационного объекта внешнего хоста <id> от имени пользователя <user> ("*" - для системных хостов).
- void extHostSet( const ExtHost &host ); - Установка внешнего хоста/станции <host>.
- void extHostDel( const string &user, const string &id ); - Удаление внешнего хоста/станции <id> от имени пользователя <user> ("*" - для системных хостов).
- int cntrIfCmd( XMLNode &node, const string &senderPref, const string &user = "" ); - Передача запроса интерфейса управления OpenSCADA <node> к удалённой станции.
- void subStart( ); - Запуск подсистемы.
- void subStop( ); - Останов подсистемы.
- TElem &inEl( ); - Структура БД входящих транспортов.
- TElem &outEl( ); - Структура БД исходящих транспортов.
- AutoHD<TTipTransport> at( const string &id ); - Обращение/подключение к типу транспорта <id>.
6.2. Модульный объект типа транспортов (TTipTransport)
| Наследует: | TModule. |
| Наследуется: | Корневыми объектами модулей подсистемы «Транспорты». |
Публичные методы:
- void inList( vector<string> &list ); - Список входящих транспортов.
- bool inPresent( const string &name ); - Проверка на наличие входящего транспорта.
- void inAdd( const string &name, const string &db = "*.*" ); - Добавление входящего транспорта.
- void inDel( const string &name, bool complete = false ); - Удаление входящего транспорта. Возможно полное удаление, включающее и БД, путём установки признака <complete>.
- AutoHD<TTransportIn> inAt( const string &name ); - Подключение к входящему транспорту.
- void outList( vector<string> &list ); - Список исходящих транспортов.
- bool outPresent( const string &name ); - Проверка на наличие исходящего транспорта.
- void outAdd( const string &name, const string &db = "*.*" ); - Добавление исходящего транспорта.
- void outDel( const string &name, bool complete = false ); - Удаление исходящего транспорта. Возможно полное удаление, включающее и БД, путём установки признака <complete>.
- AutoHD<TTransportOut> outAt( const string &name ) - Подключение к исходящему транспорту.
- TTransportS &owner( ); - Подсистема "Транспорты" - владелец типом транспорта.
Защищённые методы:
- 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( ); - Адрес.
- string protocol( ); - Связанный транспортный протокол.
- virtual string getStatus( ); - Получение статуса входящего транспорта.
- bool toStart( ); - Признак «Запускать транспорт».
- bool startStat( ); - Состояние «Транспорт запущен».
- string DB( ); - Адрес БД транспорта.
- string tbl( ); - Таблица БД транспорта.
- string fullDB( ); - Полное имя таблицы БД транспорта.
- void setName( const string &inm ); - Установка имени транспорта в <inm>.
- void setDscr( const string &idscr ); - Установка описания транспорта в <idscr>.
- virtual 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( ); - Останов транспорта.
- TTipTransport &owner( ); - Тип транспорта – владелец входящим транспортом.
Защищённые атрибуты:
- 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( ); - Адрес транспорта.
- int prm1( ); - Первый резервный параметр.
- int prm2( ); - Второй резервный параметр.
- bool toStart( ); - Признак «Запускать транспорт».
- bool startStat( ); - Состояние «Транспорт запущен».
- virtual string getStatus( ); - Получение статуса транспорта.
- string DB( ); - Адрес БД транспорта.
- string tbl( ); - Таблица БД транспорта.
- string fullDB( ); - Полное имя таблицы БД транспорта.
- void setName( const string &inm ); - Установка имени транспорта.
- void setDscr( const string &idscr ); - Установка описания транспорта.
- virtual void setAddr( const string &addr ); - Установка адреса транспорта.
- void setPrm1( int vl ); - Установка первого резервного параметра.
- void setPrm2( int vl ); - Установка второго резервного параметра.
- void setToStart( bool val ); - Установка признака «Запускать транспорт».
- void setDB( const string &vl ); - Установка адреса БД транспорта.
- virtual void start( ); - Запуск транспорта.
- virtual void stop( ); - Останов транспорта.
- virtual int messIO( const char *obuf, int len_ob, char *ibuf = NULL, int len_ib = 0, int time = 0, bool noRes = false ); - Отправка данных через транспорт. Время ожидания <time> соединения указывается в милисекундах. <noRes> используется протоколами для монопольного блокирования транспорта на время работы с ним и исключения собственной блокировки функцией.
- void messProtIO( XMLNode &io, const string &prot ); - Отправка данных в дереве XML <in> через транспорт, используя транспортный протокол <prot>.
- TTipTransport &owner( ); - Тип транспорта – владелец исходящим транспортом.
Защищённые атрибуты:
- bool run_st; - Признак «Запущен».