00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #define SAGA_NO_IMPORT_ATTRIBUTE
00011 #define SAGA_EXPORT_ATTRIBUTE SAGA_CPR_PACKAGE_EXPORT
00012
00013 #include <boost/assign/list_inserter.hpp>
00014 #include <boost/assign/std/vector.hpp>
00015
00016
00017 #include <saga/saga/cpr.hpp>
00018 #include <saga/saga/adaptors/metric.hpp>
00019 #include <saga/impl/cpr.hpp>
00020
00021 #include <saga/saga/detail/attribute_impl.hpp>
00022
00024 namespace saga { namespace cpr {
00025
00026 description::description ()
00027 : saga::job::description (new saga::impl::cpr_job_description ())
00028 {
00029 using namespace boost::assign;
00030 std::vector<std::string> valid_keys;
00031 valid_keys +=
00032 saga::job::attributes::description_executable,
00033 saga::job::attributes::description_arguments,
00034 saga::job::attributes::description_environment,
00035 saga::job::attributes::description_working_directory,
00036 saga::job::attributes::description_interactive,
00037 saga::job::attributes::description_input,
00038 saga::job::attributes::description_output,
00039 saga::job::attributes::description_error,
00040 saga::job::attributes::description_file_transfer,
00041 saga::job::attributes::description_cleanup,
00042 saga::job::attributes::description_job_start_time,
00043 saga::job::attributes::description_total_cpu_time,
00044 saga::job::attributes::description_wall_time_limit,
00045 saga::job::attributes::description_total_physical_memory,
00046 saga::job::attributes::description_cpu_architecture,
00047 saga::job::attributes::description_operating_system_type,
00048 saga::job::attributes::description_candidate_hosts,
00049 saga::job::attributes::description_queue,
00050 saga::job::attributes::description_job_contact,
00051 saga::job::attributes::description_job_project,
00052 saga::job::attributes::description_spmd_variation,
00053 saga::job::attributes::description_total_cpu_count,
00054 saga::job::attributes::description_number_of_processes,
00055 saga::job::attributes::description_processes_per_host,
00056 saga::job::attributes::description_threads_per_process
00057 ;
00058
00059
00060 this->init_keynames(valid_keys);
00061
00062 strmap_type attributes_scalar_rw;
00063 insert(attributes_scalar_rw)
00064 (saga::job::attributes::description_executable, "")
00065 (saga::job::attributes::description_operating_system_type, "")
00066 (saga::job::attributes::description_cpu_architecture, "")
00067 (saga::job::attributes::description_total_cpu_count, "")
00068 (saga::job::attributes::description_spmd_variation, "")
00069 (saga::job::attributes::description_number_of_processes, "")
00070 (saga::job::attributes::description_processes_per_host, "")
00071 (saga::job::attributes::description_threads_per_process, "")
00072 (saga::job::attributes::description_working_directory, "")
00073 (saga::job::attributes::description_interactive, "")
00074 (saga::job::attributes::description_input, "")
00075 (saga::job::attributes::description_output, "")
00076 (saga::job::attributes::description_error, "")
00077 (saga::job::attributes::description_cleanup, "")
00078 (saga::job::attributes::description_job_start_time, "")
00079 (saga::job::attributes::description_total_cpu_time, "")
00080 (saga::job::attributes::description_wall_time_limit, "")
00081 (saga::job::attributes::description_total_physical_memory, "")
00082 (saga::job::attributes::description_queue, "")
00083 (saga::job::attributes::description_job_contact, "")
00084 ;
00085
00086 strmap_type attributes_vector_rw;
00087 insert(attributes_vector_rw)
00088 (saga::job::attributes::description_candidate_hosts, "")
00089 (saga::job::attributes::description_file_transfer, "")
00090 (saga::job::attributes::description_environment, "")
00091 (saga::job::attributes::description_arguments, "")
00092 (saga::job::attributes::description_candidate_hosts, "")
00093 (saga::job::attributes::description_job_project, "")
00094 ;
00095
00096
00097 this->init (strmap_type(), attributes_scalar_rw,
00098 strmap_type(), attributes_vector_rw);
00099 this->init (false, true);
00100 }
00101
00102 description::description(saga::impl::cpr_job_description *impl)
00103 : saga::job::description (impl)
00104 {
00105 }
00106
00107 description::~description (void)
00108 {
00109 }
00110
00112 description::description (saga::object const& o)
00113 : saga::job::description (o)
00114 {
00115 if (this->get_type() != saga::object::JobDescription)
00116 {
00117 SAGA_THROW("Bad type conversion.", saga::BadParameter);
00118 }
00119 }
00120
00121 description &description::operator= (saga::object const& o)
00122 {
00123 return saga::object::operator=(o), *this;
00124 }
00125
00126 }
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00138 }
00139
00140