Приложения
Приложение А. Функции, константы и структуры RDS
А.2. События блока и связанные с ними описания
А.2.8. События обмена данными по сети
А.2.8.5. RDS_BFM_NETERROR – ошибка при работе с сетью
Поток, в котором вызывается функция модели
Главный поток RDS.
Первый параметр функции модели (int CallMode)
Константа RDS_BFM_NETERROR.
Третий параметр функции модели (void *ExtParam)
Указатель на структуру RDS_NETERRORDATA, содержащую код и описание ошибки.
Возвращаемое функцией модели значение
Не используется, можно возвращать любое значение.
Примечания
Реакция на событие RDS_BFM_NETERROR вызывается у блоков, участвующих в приеме или передаче данных, при возникновении различных ошибок в сетевом соединении. Большую часть таких ошибок RDS обрабатывает самостоятельно, поэтому, как правило, в моделях блоков реакция на это событие не требуется. Процедуры обмена данными по сети, используемые в RDS, подробно описаны в §2.15 руководства программиста.
При реакции на событие RDS_BFM_NETERROR в параметре ExtParam передается указатель на структуру 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 (RDSINT32)
- Идентификатор соединения, возвращенный функцией rdsNetConnect при его создании.
- HostA (RDSCSTR), HostW (RDSWCSTR), Host (RDSXCSTR)
- Имя (URL) или IP-адрес сервера, с которым установлено соединение (только в том случае, если в качестве сервера не используется та же копия «rds.exe», в которую загружена схема с данным блоком).
- Port (RDSINT32)
- Номер сетевого порта, через который идет обмен данными.
- ChannelA (RDSCSTR), ChannelW (RDSWCSTR), Channel (RDSXCSTR)
- Имя канала передачи данных.
- ErrorCode (RDSINT32)
- Код возникшей ошибки – одна из следующих констант:
RDS_NETERR_NOBLOCK Блок, которому переданы данные функцией rdsNetSendData, не существует. RDS_NETERR_SEND Ошибка при передаче данных. RDS_NETERR_RECEIVE Ошибка при приеме данных. RDS_NETERR_DISCONNECT Ошибка при попытке разорвать связь. RDS_NETERR_ACCEPT Ошибка при установке соединения сервера с клиентом. RDS_NETERR_CLIENTCONN Для блоков схемы, работающей на сервере: ошибка при установке соединения с клиентом. RDS_NETERR_GENERAL Неизвестная ошибка. - Station (RDS_NETSTATION)
- Сетевой идентификатор «проблемной» машины. При коде ошибки RDS_NETERR_NOBLOCK в этом поле указывается сетевой идентификатор машины, переданный при вызове данным блоком функции rdsNetSendData, если пара идентификаторов «машина, блок», использованная в этом вызове, не соответствует реально существующему блоку (то есть если такой машины нет, или если идентификатор машины правильный, но на ней нет блока с указанным в вызове идентификатором).
- Block (RDS_NETBLOCK)
- Сетевой идентификатор «проблемного» блока. При коде ошибки RDS_NETERR_NOBLOCK в этом поле указывается сетевой идентификатор блока, переданный при вызове данным блоком функции rdsNetSendData, если пара идентификаторов «машина, блок», использованная в этом вызове, не соответствует реально существующему блоку (то есть если такой машины нет, или если идентификатор машины правильный, но на ней нет блока с указанным в вызове идентификатором).
См. также
RDS_BFM_NETCONNECT, RDS_BFM_NETDISCONNECT, rdsNetBroadcastData, rdsNetSendData.