示例#1
0
文件: stubs.c 项目: ybouret/iics
/******************************************************************************
 * 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;
}
示例#3
0
/* Callback involved in command communication. */
void SlaveProcessCallback(void *cbdata)
{
    simulation_data *sim = (simulation_data *)cbdata;
    int command = VISIT_COMMAND_PROCESS;
    BroadcastSlaveCommand(&command, sim);
}
示例#4
0
文件: stubs.c 项目: ybouret/iics
/* Callback involved in command communication. */
void SlaveProcessCallback()
{
    int command = VISIT_COMMAND_PROCESS;
    BroadcastSlaveCommand(&command);
}