Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.2. События блока и связанные с ними описания

А.2.8. События обмена данными по сети

А.2.8.5. RDS_BFM_NETERROR – ошибка при работе с сетью

# Приложения

## Приложение А. Функции, константы и структуры 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.