Описание пользователя
Глава 3. Использование стандартных модулей автокомпиляции
§3.7. Краткий перечень вводимых в модель описаний и реакций на события
§3.7.10. Обмен данными по сети
§3.7.10.5. Ошибка сети
Это событие возникает в блоке, участвующем в обмене данными по сети, при возникновении различных ошибок в сетевом соединении. Большую часть таких ошибок RDS обрабатывает самостоятельно, поэтому, как правило, в моделях блоков реакция на это событие не требуется. Стандартный модуль автокомпиляции не автоматизирует передачу данных между блоками по сети, желающие реализовать ее могут изучить §2.15 руководства программиста.
Текст реакции на ошибку вводится на вкладке «» левой панели редактора модели: раздел «», подраздел «». В классе блока для нее создается функция с именем rdsbcppNetError следующего вида:
// Network error void rdsbcppBlockClass::rdsbcppNetError(RDS_PNETERRORDATA ErrorData) { … пользовательский текст реакции … }
Параметр функции ErrorData – это указатель на структуру RDS_NETERRORDATA, описывающую соединение и возникшую ошибку:
typedef struct { RDSINT32 ConnId; // Идентификатор соединения RDSCSTR HostA; // URL или IP-адрес сервера (UTF8) RDSWCSTR HostW; // URL или IP-адрес сервера (UTF16) //RDSXCSTR Host; // URL или IP-адрес сервера (поле-псевдоним) RDSINT32 Port; // Порт RDSCSTR ChannelA; // Имя канала (UTF8) RDSWCSTR ChannelW; // Имя канала (UTF16) //RDSXCSTR Channel; // Имя канала (поле-псевдоним) RDSINT32 ErrorCode; // Код ошибки (RDS_NETERR_*) RDS_NETSTATION Station; // Идентификатор машины RDS_NETBLOCK Block; // Идентификатор блока } RDS_NETERRORDATA; typedef RDS_NETERRORDATA *RDS_PNETERRORDATA;
Поля структуры имеют следующий смысл:
- ConnId (int)
- Уникальный идентификатор сетевого соединения, возвращенный сервисной функцией при его создании.
- HostA (RDSCSTR), HostW (RDSWCSTR), Host (RDSXCSTR)
- Имя (URL) или IP-адрес сервера, с которым установлено соединение.
- Port (int)
- Номер сетевого порта, через который идет обмен данными.
- ChannelA (RDSCSTR), ChannelW (RDSWCSTR), Channel (RDSXCSTR)
- Имя канала передачи данных.
- ErrorCode (int)
- Один из поддерживаемых кодов ошибки:
RDS_NETERR_NOBLOCK Блок, которому переданы данные, не существует. RDS_NETERR_SEND Ошибка при передаче данных. RDS_NETERR_RECEIVE Ошибка при приеме данных. RDS_NETERR_DISCONNECT Ошибка при попытке разорвать связь. RDS_NETERR_ACCEPT Ошибка при установке соединения сервера с клиентом. RDS_NETERR_CLIENTCONN Для блоков схемы, работающей на сервере – ошибка при установке соединения с клиентом. RDS_NETERR_GENERAL Неизвестная ошибка. - SenderStation (RDS_NETSTATION)
- Идентификатор машины, если он нужен для описания ошибки (при коде ошибки RDS_NETERR_NOBLOCK).
- SenderBlock (RDS_NETBLOCK)
- Идентификатор блока на машине Station.
При написании моделей блоков без использования модуля автокомпиляции ошибке сети соответствует константа RDS RDS_BFM_NETERROR.