Приложения
Приложение А. Функции, константы и структуры RDS
А.2. События блока и связанные с ними описания
А.2.8. События обмена данными по сети
А.2.8.2. RDS_BFM_NETDATAACCEPTED – получение данных сервером
Поток, в котором вызывается функция модели
Главный поток RDS.
Первый параметр функции модели (int CallMode)
Константа RDS_BFM_NETDATAACCEPTED.
Третий параметр функции модели (void *ExtParam)
Указатель на структуру RDS_NETACCEPTDATA, содержащую информацию о принятом сервером блоке данных.
Возвращаемое функцией модели значение
Не используется, можно возвращать любое значение.
Примечания
Реакция на событие RDS_BFM_NETDATAACCEPTED вызывается у блока, передавшего данные на сервер, после получения сервером этих данных. Это событие возникает только в том случае, если, передавая данные, блок запросил у сервера подтверждение их приема, указав флаг RDS_NETSEND_SERVREPLY при вызове функции передачи данных rdsNetBroadcastData или rdsNetSendData. Чаще всего реакция на событие RDS_BFM_NETDATAACCEPTED используется для организации в блоке собственной очереди передачи данных, не связанной с очередью RDS: в этом случае блок не передает очередную порцию данных, пока не получит от сервера подтверждение приема предыдущей. Следует помнить, что подтверждение выдается при получении данных сервером, а не блоком-получателем данных – серверу еще только предстоит отправить данные получателю. Процедуры обмена данными по сети, используемые в RDS, подробно описаны в §2.15 руководства программиста.
В параметре ExtParam передается указатель на структуру 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 (RDSINT32)
- Идентификатор соединения, возвращенный функцией rdsNetConnect при его создании.
- HostA (RDSCSTR), HostW (RDSWCSTR), Host (RDSXCSTR)
- Имя (URL) или IP-адрес сервера, с которым установлено соединение (только в том случае, если в качестве сервера не используется та же копия «rds.exe», в которую загружена схема с данным блоком).
- Port (RDSINT32)
- Номер сетевого порта, через который идет обмен данными.
- ChannelA (RDSCSTR), ChannelW (RDSWCSTR), Channel (RDSXCSTR)
- Имя канала передачи данных.
- Id (RDSINT32)
- Идентификатор полученных сервером данных (целое число, указанное в вызове одной из функций передачи данных). По нему модель блока может определить, какая именно порция данных принята сервером.
См. также
RDS_BFM_NETDATARECEIVED, rdsNetBroadcastData, rdsNetSendData.