static AJSVC_ServiceStatus AJApp_MessageProcessor(AJ_BusAttachment* busAttachment, AJ_Message* msg, AJ_Status* status) { AJSVC_ServiceStatus serviceStatus = AJSVC_SERVICE_STATUS_HANDLED; uint16_t port; char* joiner; uint32_t sessionId = 0; uint8_t session_accepted = FALSE; if (msg->msgId == AJ_METHOD_ACCEPT_SESSION) { // Process all incoming request to join a session and pass request for acceptance by all services *status = AJ_UnmarshalArgs(msg, "qus", &port, &sessionId, &joiner); if (*status != AJ_OK) { return serviceStatus; } session_accepted |= (port == AJ_ABOUT_SERVICE_PORT); session_accepted |= AJSVC_CheckSessionAccepted(port, sessionId, joiner); *status = AJ_BusReplyAcceptSession(msg, session_accepted); AJ_AlwaysPrintf(("%s session session_id=%u joiner=%s for port %u\n", (session_accepted ? "Accepted" : "Rejected"), sessionId, joiner, port)); } else { switch (currentServicesInitializationState) { case INIT_SERVICES_PORT: if (msg->msgId == AJ_REPLY_ID(AJ_METHOD_BIND_SESSION_PORT)) { currentServicesInitializationState = nextServicesInitializationState; } break; default: serviceStatus = AJSVC_MessageProcessorAndDispatcher(busAttachment, msg, status); break; } } return serviceStatus; }
AJ_Status AJS_ServicesMsgHandler(AJ_Message* msg) { AJ_Status status = AJ_OK; AJSVC_ServiceStatus svcStatus; svcStatus = AJSVC_MessageProcessorAndDispatcher(msg->bus, msg, &status); if (svcStatus == AJSVC_SERVICE_STATUS_NOT_HANDLED) { return AJ_ERR_NO_MATCH; } else { return status; } }
static AJSVC_ServiceStatus AJApp_MessageProcessor(AJ_BusAttachment* busAttachment, AJ_Message* msg, AJ_Status* status) { AJSVC_ServiceStatus serviceStatus = AJSVC_SERVICE_STATUS_HANDLED; switch (currentServicesInitializationState) { default: serviceStatus = AJSVC_MessageProcessorAndDispatcher(busAttachment, msg, status); break; } return serviceStatus; }