SAGA C++ API 1.6
cpr_job_description.hpp
Go to the documentation of this file.
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 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines