In RFAJ_RDMUsageGuide.pdf, “If the client specifies a service name in a directory request, it receives the directory response for just the requested service. If the requested service name is not available to RFA, RFA responds with a refresh message that contains an empty map entry in the payload.” If the application receives an update directory message containing an empty map entry in the payload what does this mean?
The update message means there is change on a service which the application does not request for; RFA has removed the changed info of non-requested service from the map so the map is empty. Hence, the application can ignore this update message.
Please see details below:
Even you application sets the service name e.g. SERVICE_A into a directory request:
Msg Type: MsgType.REQUEST Msg Model Type: DIRECTORY Indication Flags: REFRESH Hint Flags: HAS_ATTRIB_INFO AttribInfo ServiceName: SERVICE_A Filter: 3 (INFO | STATE) Payload: None
RFA still requests directory for all services. This is current expected behavior of RFA:
Msg Type: MsgType.REQUEST Msg Model Type: DIRECTORY Indication Flags: REFRESH Hint Flags: HAS_ATTRIB_INFO AttribInfo Filter: 63 (INFO | STATE | GROUP | LOAD | DATA | LINK) Payload: None
Hence, RFA receives response messages (refresh and update) including all services info e.g. info of SERVICE_A and SERVICE_B:
Since the application requests only a specific service (SERVICE_A), RFA removes non-requested service info(SERVICE_B) from the message and pass the message to the application. So the application receives only info from the service that it has requested:
When there is update on SERVICE_B e.g. SERVICE_B goes down, RFA receives an update message with 1 entry map; SERVICE_B(service id 4844) map entry containing down state:
The application does not request SERVICE_B directory; it requests SERVICE_A directory so RFA removes SERVICE_B map entry. The only 1 map entry has been removed; the update message contains an empty map entry. Then, RFA pass the message to the application:
That’s why the application receives an update message containing an empty map entry in the payload.