Example #1
0
/**
@details
-# Save the number of jobs in the scheduler
-# Copy all of the job information in a checkpointable array
-# Save the number of sim_objects in the scheduler
-# Copy all of the sim_objects in a checkpointable array
*/
int Trick::Executive::checkpoint() {

    unsigned int ii ;

    /* save the number of jobs in the scheduler */
    num_all_jobs = all_jobs_vector.size() ;

    /* copy all of the job information in a checkpointable array */
    if ( num_all_jobs > 0 ) {
        all_jobs_for_checkpoint = (Trick::JobData *)TMM_declare_var( TRICK_STRUCTURED, "Trick::JobData", 
         0 , "all_jobs" , 1 , (int *)&num_all_jobs) ;
        for ( ii = 0 ; ii < num_all_jobs ; ii++ ) {
            all_jobs_for_checkpoint[ii] = *(all_jobs_vector[ii]) ;
        }
    }

    checkpoint_stl(sim_objects , std::string("trick_sys") , std::string("sim_objects")) ;
    checkpoint_stl(freeze_times , std::string("trick_sys") , std::string("freeze_times")) ;

    return(0) ;

}
Example #2
0
int IntegLoopSimObject::call_function ( Trick::JobData * curr_job ) {

    int trick_ret = 0 ;
    if ( curr_job->disabled ) return (trick_ret) ;

    switch ( curr_job->id ) {
        case 0:
            integ_sched.rebuild_jobs() ;
            break ;
        case 1:
            integ_sched.get_first_step_deriv_from_integrator() ;
            break ;
        case 2:
            integ_sched.call_deriv_jobs() ;
            break ;
        case 3:
            integ_sched.integrate() ;
            break ;
        case 4:
            checkpoint_stl(integ_sched.sim_objects, name + std::string("_") + std::string("integ_sched.sim_objects"), std::string("")) ;
            break ;
        case 5:
            delete_stl (integ_sched.sim_objects, name + std::string("_") + std::string("integ_sched.sim_objects"), std::string("")) ;
            break ;
        case 6:
            restore_stl (integ_sched.sim_objects, name + std::string("_") + std::string("integ_sched.sim_objects"), std::string("")) ;
            break ;
        case 7:
            integ_sched.restart_checkpoint() ;
            break ;
        case 8:
            integ_sched.rebuild_jobs() ;
            break ;
        case 9:
            integ_sched.get_first_step_deriv_from_integrator() ;
            break ;
        default:
            trick_ret = -1 ;
            break ;
    }

    return(trick_ret) ;
}
/* All STLs are checkpointed through the same templated function checkpoint_stl.  The 
   second and third arguments to the call give each set of STL data a unique name.  In
   this example the unique name is the concatenation of the object instance and the variable name
 */
int STLCompanion::checkpoint(STLCheckpoint * stlc, std::string object_name ) {

    checkpoint_stl(stlc->my_double_map , object_name , std::string("my_double_map")) ;
    checkpoint_stl(stlc->my_string_key_map , object_name , std::string("my_string_key_map")) ;
    checkpoint_stl(stlc->my_string_data_map , object_name , std::string("my_string_data_map")) ;
    checkpoint_stl(stlc->my_string_map , object_name , std::string("my_string_map")) ;

    checkpoint_stl(stlc->my_int_multimap , object_name , std::string("my_int_multimap")) ;
    checkpoint_stl(stlc->my_string_key_multimap , object_name , std::string("my_string_key_multimap")) ;
    checkpoint_stl(stlc->my_string_data_multimap , object_name , std::string("my_string_data_multimap")) ;
    checkpoint_stl(stlc->my_string_multimap , object_name , std::string("my_string_multimap")) ;

    checkpoint_stl(stlc->my_double_vector , object_name , std::string("my_double_vector")) ;
    checkpoint_stl(stlc->my_string_vector , object_name , std::string("my_string_vector")) ;

    checkpoint_stl(stlc->my_short_list , object_name , std::string("my_short_list")) ;
    checkpoint_stl(stlc->my_string_list , object_name , std::string("my_string_list")) ;

    checkpoint_stl(stlc->my_float_deque , object_name , std::string("my_float_deque")) ;
    checkpoint_stl(stlc->my_string_deque , object_name , std::string("my_string_deque")) ;

    checkpoint_stl(stlc->my_int_set , object_name , std::string("my_int_set")) ;
    checkpoint_stl(stlc->my_string_set , object_name , std::string("my_string_set")) ;

    checkpoint_stl(stlc->my_long_multiset , object_name , std::string("my_long_multiset")) ;
    checkpoint_stl(stlc->my_string_multiset , object_name , std::string("my_string_multiset")) ;

    checkpoint_stl(stlc->my_uint_stack , object_name , std::string("my_uint_stack")) ;
    checkpoint_stl(stlc->my_string_stack , object_name , std::string("my_string_stack")) ;

    checkpoint_stl(stlc->my_int_queue , object_name , std::string("my_int_queue")) ;
    checkpoint_stl(stlc->my_string_queue , object_name , std::string("my_string_queue")) ;

    checkpoint_stl(stlc->my_int_priority_queue , object_name , std::string("my_int_priority_queue")) ;
    checkpoint_stl(stlc->my_string_priority_queue , object_name , std::string("my_string_priority_queue")) ;

    checkpoint_stl(stlc->my_int_pair , object_name , std::string("my_int_pair")) ;
    checkpoint_stl(stlc->my_string_first_pair , object_name , std::string("my_string_first_pair")) ;
    checkpoint_stl(stlc->my_string_second_pair , object_name , std::string("my_string_second_pair")) ;
    checkpoint_stl(stlc->my_string_pair , object_name , std::string("my_stringpair")) ;

    return 0 ;
}