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

Описания RDS

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

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

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

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

§3.7.10.4. Данные приняты сервером

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

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

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

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

##### §3.7.10.4. Данные приняты сервером

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

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

      // Data accepted by the server
      void rdsbcppBlockClass::rdsbcppNetAccepted(RDS_PNETACCEPTDATA AccData)
      {
         … пользовательский текст реакции …
      }

Параметр функции AccData – это указатель на структуру RDS_NETACCEPTDATA, описывающую переданные данные, прием которых подтверждается:

      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 Id;         // Идентификатор полученного блока данных
      } RDS_NETACCEPTDATA;
      typedef RDS_NETACCEPTDATA *RDS_PNETACCEPTDATA;

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

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

При написании моделей блоков без использования модуля автокомпиляции подтверждению получения данных сервером соответствует константа RDS RDS_BFM_NETDATAACCEPTED.