SAGA C++ API 1.6
job_service.cpp
Go to the documentation of this file.
00001 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES)
00002 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/service.cpp")
00003 #endif
00004 //  Copyright (c) 2005-2009 Hartmut Kaiser
00005 // 
00006 //  Distributed under the Boost Software License, Version 1.0. (See accompanying 
00007 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
00008 
00009 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES)
00010 #pragma wave option(output: null)
00011 #endif
00012 
00013 // include service api and implementation
00014 #include <saga/saga/job.hpp>
00015 #include <saga/saga/adaptors/task.hpp>
00016 #include <saga/impl/job.hpp>
00017 #include <saga/saga/detail/call.hpp>
00018 
00019 #ifdef SAGA_DEBUG
00020 #include <saga/saga/packages/job/preprocessed/service.cpp>
00021 #else
00022 
00023 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES)
00024 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/service.cpp")
00025 #endif
00026 
00027 namespace saga
00028 {
00029     namespace job {
00030 
00031   service::service (session const &s, saga::url rm)
00032     : saga::object (new saga::impl::job_service (s, rm))
00033   {
00034       this->saga::object::get_impl()->init();
00035   }
00036 
00037   service::service (saga::url rm)
00038     : saga::object (new saga::impl::job_service(saga::detail::get_the_session(), rm))
00039   {
00040       this->saga::object::get_impl()->init();
00041   }
00042 
00043   service::service (saga::object const& o)
00044     : saga::object (o)
00045   {
00046       if (this->get_type() != saga::object::JobService)
00047       {
00048           SAGA_THROW("Bad type conversion.", saga::BadParameter);
00049       }
00050   }
00051 
00052   service::service (saga::impl::job_service *impl)
00053     : saga::object (impl)
00054   {
00055   }
00056 
00057   service::service (int)
00058   {
00059   }
00060 
00061   service::~service (void)
00062   {
00063   }
00064 
00065   service &service::operator= (saga::object const& o)
00066   {
00067       if (this != &o) 
00068           this->saga::object::operator=(o);
00069       return *this;
00070   }
00071 
00072   saga::impl::job_service* service::get_impl() const
00073   { 
00074       typedef saga::object base_type;
00075       return static_cast<saga::impl::job_service*>(this->base_type::get_impl()); 
00076   }
00077 
00078   TR1::shared_ptr <saga::impl::job_service> service::get_impl_sp(void) const
00079   { 
00080       // FIXME: this needs documentation
00081       typedef saga::object base_type;
00082       return TR1::static_pointer_cast <saga::impl::job_service> (
00083           this->base_type::get_impl_sp());
00084   }
00085 
00086   // factory
00087   SAGA_CALL_CREATE_IMP_2(service, impl::job_service, session const&, saga::url)
00088 
00089   // methods of the service
00090   SAGA_CALL_IMP_1    (service, create_job, description)
00091   SAGA_CALL_CONST_IMP_0(service, get_url)
00092   SAGA_CALL_IMP_5    (service, run_job, std::string, std::string,
00093                       saga::job::ostream&, saga::job::istream&, saga::job::istream&)
00094   SAGA_CALL_IMP_2_EX (service, run_job, run_job_noio, std::string, std::string)
00095   SAGA_CALL_IMP_0    (service, list)
00096   SAGA_CALL_IMP_1    (service, get_job,  std::string)
00097   SAGA_CALL_IMP_0    (service, get_self)
00098 }
00099 
00100 } // namespace saga
00102 
00103 #endif
00104 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines