コード例 #1
0
ファイル: dispatch.c プロジェクト: Paresh1693/carmen
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");
  }
}
コード例 #2
0
ファイル: recvMsg.c プロジェクト: acekiller/MasterThesis
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);
  }
}