00001 // Copyright (c) 2005-2009 Hartmut Kaiser 00002 // Copyright (c) 2007 Ole Weidner (oweidner@cct.lsu.edu) 00003 // Copyright (c) 2008 Andre Merzky (andre@merzky.net) 00004 // 00005 // Distributed under the Boost Software License, Version 1.0. (See accompanying 00006 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 00007 00008 00009 #ifndef SAGA_PACKAGES_CPR_JOB_DESCRIPTION_HPP 00010 #define SAGA_PACKAGES_CPR_JOB_DESCRIPTION_HPP 00011 00012 #include <string> 00013 #include <vector> 00014 00015 // include dependent spec sections 00016 #include <saga/saga/util.hpp> 00017 #include <saga/saga/base.hpp> 00018 #include <saga/saga/types.hpp> 00019 #include <saga/saga/session.hpp> 00020 #include <saga/saga/call.hpp> 00021 #include <saga/saga/job.hpp> 00022 #include <saga/saga/detail/attribute.hpp> 00023 00024 #include <saga/saga/packages/cpr/config.hpp> 00025 00026 // suppress warnings about dependent classes not being exported from the dll 00027 #if defined(BOOST_MSVC) 00028 #pragma warning(push) 00029 #pragma warning(disable: 4251 4231 4275 4660) 00030 #endif 00031 00033 namespace saga 00034 { 00035 namespace cpr 00036 { 00037 namespace attributes 00038 { 00039 // /*! \brief <b>[rw]</b> Command to execute (this is the only required %attribute for 00040 // * a %job description %object) 00041 // */ 00042 // char const* const description_executable = "Executable"; 00043 // /*! \brief <b>[rw]</b> Positional parameters for the command 00044 // */ 00045 // char const* const description_arguments = "Arguments"; 00046 // /*! \brief <b>[rw]</b> Set of environment variables for the %job (format: 'key=value'). 00047 // */ 00048 // char const* const description_environment = "Environment"; 00049 // /*! \brief <b>[rw]</b> Working directory for the %job 00050 // */ 00051 // char const* const description_working_directory = "WorkingDirectory"; 00052 // /*! \brief <b>[rw]</b> Run the %job in interactive mode 00053 // */ 00054 // char const* const description_interactive = "Interactive"; 00055 // /*! \brief <b>[rw]</b> Pathname of the standard input %file 00056 // */ 00057 // char const* const description_input = "Input"; 00058 // /*! \brief <b>[rw]</b> Pathname of the standard output %file 00059 // */ 00060 // char const* const description_output = "Output"; 00061 // /*! \brief <b>[rw]</b> Pathname of the standard error %file 00062 // */ 00063 // char const* const description_error = "Error"; 00064 // /*! \brief <b>[rw]</b> A list of %file transfer directives 00065 // */ 00066 // char const* const description_file_transfer = "FileTransfer"; 00067 // /*! \brief <b>[rw]</b> Defines if output files get removed after the %job finishes 00068 // */ 00069 // char const* const description_cleanup = "Cleanup"; 00070 // /*! \brief <b>[rw]</b> Time at which a %job should be scheduled 00071 // */ 00072 // char const* const description_job_start_time = "JobStartTime"; 00073 // /*! \brief <b>[rw]</b> ?!? 00074 // */ 00075 // char const* const description_total_cpu_time = "TotalCPUTime"; 00076 // /*! \brief <b>[rw]</b> Estimated amount of memory the %job requires 00077 // */ 00078 // char const* const description_total_physical_memory = "TotalPhysicalMemory"; 00079 // /*! \brief <b>[rw]</b> Compatible processor for %job submission 00080 // */ 00081 // char const* const description_cpu_architecture = "CPUArchitecture"; 00082 // 00083 // /*! \brief <b>[rw]</b> Compatible processor for %job submission values 00084 // */ 00085 // char const* const cpuarchitecture_sparc = "sparc"; 00086 // char const* const cpuarchitecture_powerpc = "powerpc"; 00087 // char const* const cpuarchitecture_x86 = "x86"; 00088 // char const* const cpuarchitecture_x86_32 = "x86_32"; 00089 // char const* const cpuarchitecture_x86_64 = "x86_64"; 00090 // char const* const cpuarchitecture_parisc = "parisc"; 00091 // char const* const cpuarchitecture_mips = "mips"; 00092 // char const* const cpuarchitecture_ia64 = "ia64"; 00093 // char const* const cpuarchitecture_arm = "arm"; 00094 // char const* const cpuarchitecture_other = "other"; 00095 // 00096 // /*! \brief <b>[rw]</b> Compatible operating system for %job submission 00097 // */ 00098 // char const* const description_operating_system_type = "OperatingSystemType"; 00099 // /*! \brief <b>[rw]</b> List of host names which are to be considered by the 00100 // * resource manager as candidate targets 00101 // */ 00102 // char const* const description_candidate_hosts = "CandidateHosts"; 00103 // /*! \brief <b>[rw]</b> Name of a queue to place the %job into 00104 // */ 00105 // char const* const description_queue = "Queue"; 00106 // /*! \brief <b>[rw]</b> Set of endpoints describing where to report %job state transitions 00107 // */ 00108 // char const* const description_job_contact = "JobContact"; 00109 // /*! \brief <b>[rw]</b> SPMD %job type and startup mechanism 00110 // */ 00111 // char const* const description_spmd_variation = "SPMDVariation"; 00112 // /*! \brief <b>[rw]</b> Total number of cpus requested for this %job 00113 // */ 00114 // char const* const description_total_cpu_count = "TotalCPUCount"; 00115 // /*! \brief <b>[rw]</b> Number of process instances to start 00116 // */ 00117 // char const* const description_number_of_processes = "NumberOfProcesses"; 00118 // /*! \brief <b>[rw]</b> Number of processes to start per host 00119 // */ 00120 // char const* const description_processes_per_host = "ProcessesPerHost"; 00121 // /*! \brief <b>[rw]</b> Expected number of threads per process 00122 // */ 00123 // char const* const description_threads_per_process = "ThreadsPerProcess"; 00124 } 00125 00135 class SAGA_CPR_PACKAGE_EXPORT description 00136 : public saga::job::description 00137 { 00138 00139 protected: 00141 00142 friend struct saga::detail::attribute<description>; // needs to access get_impl() 00143 friend class saga::impl::cpr_job_description; 00144 explicit description(saga::impl::cpr_job_description *impl); 00146 00147 public: 00152 description (void); 00153 00158 explicit description (saga::object const& o); 00159 00164 ~description (void); 00165 00170 description &operator= (saga::object const& o); 00171 00172 }; 00173 00174 } // namespace cpr 00175 } 00176 00177 // re-enable warnings about dependent classes not being exported from the dll 00178 #if defined(BOOST_MSVC) 00179 #pragma warning(pop) 00180 #endif 00181 00182 #endif // !defined(SAGA_PACKAGES_CPR_JOB_DESCRIPTION_HPP) 00183