/* New version: install after Rich finishes testing with the Hero simulator */ X_IPC_REF_STATUS_TYPE x_ipcReferenceStatus(X_IPC_REF_PTR ref) { X_IPC_REF_STATUS_TYPE status; (void)x_ipcQueryCentral(X_IPC_REF_STATUS_QUERY, (void *)&(ref->refId), (void *)&status); return status; }
static FORMAT_PTR Named_Format(Format_Parse_Ptr parser, TokenPtr Token) { NAMED_FORMAT_PTR namedFormat; FORMAT_PTR format; if (parser->formatStack == NULL) { parser->formatStack = x_ipc_strListCreate(); } if (x_ipc_strListMemberItem(Token->value.str, parser->formatStack)) { /* found a recursive definition. just return pointer */ return new_n_formatter(Token->value.str); } x_ipc_strListPush(strdup(Token->value.str), parser->formatStack); LOCK_M_MUTEX; namedFormat = (NAMED_FORMAT_PTR)x_ipc_hashTableFind(Token->value.str, GET_M_GLOBAL(formatNamesTable)); UNLOCK_M_MUTEX; if (!namedFormat) { #ifdef NMP_IPC if (GET_C_GLOBAL(serverRead) != CENTRAL_SERVER_ID) { if (x_ipcQueryCentral(X_IPC_NAMED_FORM_QUERY, &Token->value.str, &format) != Success || !format) { X_IPC_MOD_WARNING2("Warning: Named Format %s is not registered\n%s\n", Token->value.str, parser->ParseString); format = new_f_formatter(BadFormatFMT, NULL); } } else #endif { X_IPC_MOD_WARNING2("Warning: Named Format %s is not registered\n%s\n", Token->value.str, parser->ParseString); format = new_f_formatter(BadFormatFMT, NULL); } } else { /* Need to use the named formatter -- parse it now */ if (!namedFormat->parsed) { namedFormat->format = (FORMAT_PTR)ParseFormatString(namedFormat->definition); namedFormat->parsed = TRUE; } format = copyFormatter(namedFormat->format); } x_ipcFree((void *)x_ipc_strListPopItem(parser->formatStack)); return format; }
int IPC_numHandlers (const char *msgName) { DIRECT_MSG_TYPE directInfo; X_IPC_RETURN_VALUE_TYPE status; int num; if (!msgName || strlen(msgName) == 0) { ipcSetError(IPC_Null_Argument); return -1; } else if (!X_IPC_CONNECTED()) { ipcSetError(IPC_Not_Connected); return -1; } else { status = x_ipcQueryCentral(X_IPC_DIRECT_MSG_QUERY, (void *)&msgName, (void *)&directInfo); if (status == Success) { num = directInfo.numHandlers; x_ipcFreeReply(X_IPC_DIRECT_MSG_QUERY, &directInfo); } else { num = 0; } return num; } }
void x_ipc_classModInitialize(void) { X_IPC_MSG_CLASS_TYPE msg_class; CLASS_FORM_PTR classForm=NULL; /* 31-Aug-90: fedor: more and more difficult to do query msg ref with a QueryClass format of "int" */ msg_class = GoalClass; if (x_ipcQueryCentral(X_IPC_CLASS_INFO_QUERY, (void *)&msg_class, (void *)&classForm) == Success) { LOCK_M_MUTEX; ADD_CLASS_FORMAT(&msg_class, classForm); UNLOCK_M_MUTEX; } msg_class = CommandClass; if (x_ipcQueryCentral(X_IPC_CLASS_INFO_QUERY, (void *)&msg_class, (void *)&classForm) == Success) { LOCK_M_MUTEX; ADD_CLASS_FORMAT(&msg_class, classForm); UNLOCK_M_MUTEX; } msg_class = ExceptionClass; if (x_ipcQueryCentral(X_IPC_CLASS_INFO_QUERY, (void *)&msg_class, (void *)&classForm) == Success) { LOCK_M_MUTEX; ADD_CLASS_FORMAT(&msg_class, classForm); UNLOCK_M_MUTEX; } msg_class = PointMonitorClass; if (x_ipcQueryCentral(X_IPC_CLASS_INFO_QUERY, (void *)&msg_class, (void *)&classForm) == Success) { LOCK_M_MUTEX; ADD_CLASS_FORMAT(&msg_class, classForm); UNLOCK_M_MUTEX; } msg_class = PollingMonitorClass; if (x_ipcQueryCentral(X_IPC_CLASS_INFO_QUERY, (void *)&msg_class, (void *)&classForm) == Success) { LOCK_M_MUTEX; ADD_CLASS_FORMAT(&msg_class, classForm); UNLOCK_M_MUTEX; } msg_class = DemonMonitorClass; if (x_ipcQueryCentral(X_IPC_CLASS_INFO_QUERY, (void *)&msg_class, (void *)&classForm) == Success) { LOCK_M_MUTEX; ADD_CLASS_FORMAT(&msg_class, classForm); UNLOCK_M_MUTEX; } msg_class = ExecHndClass; if (x_ipcQueryCentral(X_IPC_CLASS_INFO_QUERY, (void *)&msg_class, (void *)&classForm) == Success) { LOCK_M_MUTEX; ADD_CLASS_FORMAT(&msg_class, classForm); UNLOCK_M_MUTEX; } msg_class = FailureClass; if (x_ipcQueryCentral(X_IPC_CLASS_INFO_QUERY, (void *)&msg_class, (void *)&classForm) == Success) { LOCK_M_MUTEX; ADD_CLASS_FORMAT(&msg_class, classForm); UNLOCK_M_MUTEX; } msg_class = FireDemonClass; if (x_ipcQueryCentral(X_IPC_CLASS_INFO_QUERY, (void *)&msg_class, (void *)&classForm) == Success) { LOCK_M_MUTEX; ADD_CLASS_FORMAT(&msg_class, classForm); UNLOCK_M_MUTEX; } msg_class = MultiQueryClass; if (x_ipcQueryCentral(X_IPC_CLASS_INFO_QUERY, (void *)&msg_class, (void *)&classForm) == Success) { LOCK_M_MUTEX; ADD_CLASS_FORMAT(&msg_class, classForm); UNLOCK_M_MUTEX; } }
int x_ipcReferenceStatus(X_IPC_REF_PTR ref) { int status = -1; (void)x_ipcQueryCentral(X_IPC_REF_STATUS_QUERY, &(ref->refId), &status); return status; }