SAGA C++ API 1.6
|
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