/****************************************************************************** * Purpose: Process commands from viewer on all processors. *****************************************************************************/ int ProcessVisItCommand(simulation_data *sim) { int command; if (sim->par_rank==0) { int success = VisItProcessEngineCommand(); if (success) { command = VISIT_COMMAND_SUCCESS; BroadcastSlaveCommand(&command); return 1; } else { command = VISIT_COMMAND_FAILURE; BroadcastSlaveCommand(&command); return 0; } } else { /* Note: only through the SlaveProcessCallback callback * above can the rank 0 process send a VISIT_COMMAND_PROCESS * instruction to the non-rank 0 processes. */ while (1) { BroadcastSlaveCommand(&command); switch (command) { case VISIT_COMMAND_PROCESS: VisItProcessEngineCommand(); break; case VISIT_COMMAND_SUCCESS: return 1; case VISIT_COMMAND_FAILURE: return 0; } } } return 1; }
//! Process visualisation command from ViSIt viewer on all processes int DDTSim::processVisItCommand() { int command; if (visitSim.rank() == 0) { int success = libsim.ProcessEngineCommand(); if (success) { command = VISIT_COMMAND_SUCCESS; BroadcastSlaveCommand(&command); return 1; } else { command = VISIT_COMMAND_FAILURE; BroadcastSlaveCommand(&command); return 0; } } else { /* Note: only through the SlaveProcessCallback callback above can the * rank 0 process send a VISIT_COMMAND_PROCESS instruction to the * non-rank-0 processes */ while(1) { BroadcastSlaveCommand(&command); switch(command) { case VISIT_COMMAND_PROCESS: libsim.ProcessEngineCommand(); break; case VISIT_COMMAND_SUCCESS: return 1; case VISIT_COMMAND_FAILURE: return 0; } } } return 1; }
/* Callback involved in command communication. */ void SlaveProcessCallback(void *cbdata) { simulation_data *sim = (simulation_data *)cbdata; int command = VISIT_COMMAND_PROCESS; BroadcastSlaveCommand(&command, sim); }
/* Callback involved in command communication. */ void SlaveProcessCallback() { int command = VISIT_COMMAND_PROCESS; BroadcastSlaveCommand(&command); }