Навигация:
<< >> Оглавление Указатель

Описание пользователя

Глава 3. Использование стандартных модулей автокомпиляции

§3.7. Краткий перечень вводимых в модель описаний и реакций на события

§3.7.10. Обмен данными по сети

§3.7.10.5. Ошибка сети

Это событие возникает в блоке, участвующем в обмене данными по сети, при возникновении различных ошибок в сетевом соединении. Большую часть таких ошибок RDS обрабатывает самостоятельно, поэтому, как правило, в моделях блоков реакция на это событие не требуется. Стандартный модуль автокомпиляции не автоматизирует передачу данных между блоками по сети, желающие реализовать ее могут изучить §2.15 руководства программиста.

Текст реакции на ошибку вводится на вкладке «события» левой панели редактора модели: раздел «сеть», подраздел «ошибка сети». В классе блока для нее создается функция с именем rdsbcppNetError следующего вида:

  // Network error
  void rdsbcppBlockClass::rdsbcppNetError( ErrorData)
  {
     … пользовательский текст реакции … 
  }

Параметр функции ErrorData – это указатель на структуру RDS_NETERRORDATA, описывающую соединение и возникшую ошибку:

  typedef struct {
     ConnId;        // Идентификатор соединения
     HostA;          // URL или IP-адрес сервера (UTF8)
     HostW;         // URL или IP-адрес сервера (UTF16)
    // Host;        // URL или IP-адрес сервера ()
     Port;          // Порт
     ChannelA;       // Имя канала (UTF8)
     ChannelW;      // Имя канала (UTF16)
    // Channel;     // Имя канала ()
     ErrorCode;     // Код ошибки (RDS_NETERR_*)
     Station; // Идентификатор машины
     Block;     // Идентификатор блока
  } ;
  typedef  *;

Поля структуры имеют следующий смысл:

ConnId (int)
Уникальный идентификатор сетевого соединения, возвращенный сервисной функцией при его создании.
HostA (RDSCSTR), HostW (RDSWCSTR), Host (RDSXCSTR)
Имя (URL) или IP-адрес сервера, с которым установлено соединение.
Port (int)
Номер сетевого порта, через который идет обмен данными.
ChannelA (), ChannelW (), Channel ()
Имя канала передачи данных.
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.


<< >> Оглавление Указатель