static void dispatchUpdateAndDisplay1(DISPATCH_STATUS_TYPE newStatus, DISPATCH_PTR dispatch) { int32 error = FALSE, printed = TRUE; int32 parentId; DISPATCH_PTR parent_dispatch; X_IPC_MSG_CLASS_TYPE msg_class, mclass; #ifndef NMP_IPC parent_dispatch = findParentDispatch(dispatch); #else parent_dispatch = NULL; #endif parentId = (parent_dispatch ? parent_dispatch->locId : dispatch->pRef); msg_class = dispatch->msg_class; /* 30Aug93: fedor: Replaced msgName = dispatch->msg->msgData->name with DISPATCH_MSG_NAME because the message name may not always be defined for a dispatch. See HandledDispatch - FailureClass */ switch(dispatch->status) { case AllocatedDispatch: switch(newStatus) { case AttendingDispatch: LOG_MESSAGE2("%-9s %15s", x_ipc_messageClassName(msg_class), DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE1(": %10s", dispatch->org->modData->modName); Log_ParentId(parentId, LOGGING_MESSAGE); LOG_MESSAGE1(" --> %-15s (Sent)", dispatch->des->modData->modName); break; case PendingDispatch: LOG_MESSAGE2("%-9s %15s", x_ipc_messageClassName(msg_class), DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE1(": %10s", dispatch->org->modData->modName); Log_ParentId(parentId, LOGGING_MESSAGE); LOG_MESSAGE1(" --> Resource %-6s (Pending)", dispatch->hnd->resource->name); break; case InactiveDispatch: LOG_MESSAGE2("%-9s %15s", x_ipc_messageClassName(msg_class), DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE1(": %10s", dispatch->org->modData->modName); Log_ParentId(parentId, LOGGING_MESSAGE); LOG_MESSAGE(" --> ON HOLD (Inactive)"); break; case HandledDispatch: if (msg_class == FailureClass) { LOG_MESSAGE2("Failure %15s: %s", "*Top Level*", *(char **)dispatch->classData); } break; default: error = TRUE; break; } break; case PendingDispatch: switch(newStatus) { case AttendingDispatch: LOG_MESSAGE2("%-9s %15s", x_ipc_messageClassName(msg_class), DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE2(": Resource %s --> %-15s (Sent)", dispatch->hnd->resource->name, dispatch->des->modData->modName); break; default: error = TRUE; break; } break; case CentralPendingDispatch: switch(newStatus) { case AttendingDispatch: LOG_MESSAGE2("%-9s %15s", x_ipc_messageClassName(msg_class), DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE1(": %10s", dispatch->org->modData->modName); Log_ParentId(parentId, LOGGING_MESSAGE); LOG_MESSAGE1(" --> %-15s (Sent)", dispatch->des->modData->modName); break; default: error = TRUE; break; } break; case AttendingDispatch: switch(newStatus) { case HandledDispatch: if (TWO_WAY_MSG(dispatch->msg)) { LOG_MESSAGE1(" Reply %15s", DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE2(": %10s --> %-15s", dispatch->des->modData->modName, dispatch->org->modData->modName); Log_ParentId(parentId, LOGGING_MESSAGE); if (!dispatch->org->alive) { LOG_MESSAGE1("\nWARNING: Reply Ignored for dead module: %s", dispatch->org->modData->modName); } } else if (monitorClass(msg_class)) { LOG_MESSAGE2("%-9s %15s", x_ipc_messageClassName(msg_class), DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE(": (Completed)"); } else if (msg_class == SuccessClass || (msg_class == InformClass && dispatch->des == GET_S_GLOBAL(x_ipcServerModGlobal))) { mclass = dispatch->msg->msgData->msg_class; if (mclass == InformClass || mclass == BroadcastClass) { LOG_MESSAGE(" Done "); } else { LOG_MESSAGE(" Success "); } LOG_MESSAGE1("%15s", DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE(":"); } else if (msg_class == FailureClass) { LOG_MESSAGE1(" Failure %15s", DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE1(": %s", *(char **)dispatch->classData); } else if (msg_class == ReplyClass) { LOG_MESSAGE1(" Reply %15s", DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); #ifdef NMP_IPC LOG_MESSAGE2(": %10s --> %-15s", dispatch->des->modData->modName, dispatch->org->modData->modName); #else LOG_MESSAGE2(": %10s --> %-15s", GET_S_GLOBAL(x_ipcServerModGlobal)->modData->modName, dispatch->org->modData->modName); #endif Log_ParentId(parentId, LOGGING_MESSAGE); } else { printed = FALSE; } break; case CentralPendingDispatch: LOG_MESSAGE2("%-9s %15s", x_ipc_messageClassName(msg_class), DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE1(": %10s", dispatch->org->modData->modName); Log_ParentId(parentId, LOGGING_MESSAGE); LOG_MESSAGE1(" --> %-15s (Pending)", dispatch->des->modData->modName); break; default: error = TRUE; break; } break; case InactiveDispatch: LOG_MESSAGE2("%-9s %15s", x_ipc_messageClassName(msg_class), DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE(": ON HOLD "); switch(newStatus) { case AttendingDispatch: LOG_MESSAGE1(" --> %-15s (Sent)", dispatch->des->modData->modName); break; case PendingDispatch: LOG_MESSAGE1(" --> Resource %-6s (Pending)", dispatch->hnd->resource->name); break; default: error = TRUE; break; } break; default: error = TRUE; break; } if (error) { LOG_MESSAGE1("\nWARNING: dispatchUpdateAndDisplay: %s", DISPATCH_MSG_NAME(dispatch)); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE2(": %s --> %s", dispatchStatusName(dispatch->status), dispatchStatusName(newStatus)); } if (printed) { Log_Time(1); LOG_MESSAGE("\n"); } }
void recvMessage(DISPATCH_PTR dispatch, X_IPC_MSG_CLASS_TYPE msg_class, void *classData) { #ifdef UNUSED_PRAGMA #pragma unused(classData) #endif if (GET_S_GLOBAL(x_ipcDebugGlobal)) { x_ipc_idTablePrintInfo(GET_S_GLOBAL(dispatchTable)); X_IPC_MOD_WARNING("\n"); x_ipcStats(stderr); } switch(msg_class) { case QueryClass: case InformClass: tapWhenSent(dispatch); processActiveMessage(dispatch); break; case ReplyClass: recvReplyMessage(dispatch); break; #ifndef NMP_IPC case GoalClass: case PointMonitorClass: case DemonMonitorClass: case PollingMonitorClass: case ExceptionClass: case CommandClass: recvTaskTreeMessage(dispatch, msg_class, classData); break; #endif case BroadcastClass: recvBroadcastMessage(dispatch); break; #ifndef NMP_IPC case MultiQueryClass: recvMultiQueryMessage(dispatch); break; #endif case SuccessClass: case FailureClass: recvSuccessFailureMessage(dispatch, msg_class); break; #ifndef NMP_IPC case FireDemonClass: LOG_MESSAGE2("%-9s %15s [%d]:", "FireDemon", dispatch->msg->msgData->name, *(int32 *)classData); Log_RefId(dispatch, LOGGING_MESSAGE); LOG_MESSAGE1("%10s", dispatch->org->modData->modName); LOG_MESSAGE1(" --> %-15s (Sent)", GET_S_GLOBAL(x_ipcServerModGlobal)->modData->modName); Log_Time(1); LOG_MESSAGE("\n"); fireDemonHnd(dispatch, (int32 *)classData); break; #endif case HandlerRegClass: case UNKNOWN: case ExecHndClass: #ifndef TEST_CASE_COVERAGE default: #endif X_IPC_ERROR1("ERROR: recvMessage: class not implemented: %d\n", msg_class); } }