// Copyright (c) 2007-2008 Ole Weidner (oweidner@cct.lsu.edu) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include "../config/saga-globus-config.hpp" #ifdef SAGA_HAVE_GLOBUS_GRAM # include # include #endif #ifdef SAGA_HAVE_GLOBUS_GRIDFTP # include #endif #ifdef SAGA_HAVE_GLOBUS_RLS # include #endif #ifdef SAGA_HAVE_GLOBUS_GSI # include #endif #ifdef SAGA_HAVE_GLOBUS_GASS # include #endif #include #include #include "globus_global_loader.hpp" namespace globus_module_loader { // the singleton class class globus_init_singleton { public: // this c'tor is only called once, and is thread safe globus_init_singleton (void) { int rc; rc = globus_module_activate (GLOBUS_COMMON_MODULE); #ifdef SAGA_HAVE_GLOBUS_GRAM SAGA_VERBOSE(SAGA_VERBOSE_LEVEL_DEBUG) { std::cout << "globus_loader: activate GRAM" << std::endl;; } rc = globus_module_activate (GLOBUS_GRAM_CLIENT_MODULE); if (rc != GLOBUS_SUCCESS) { SAGA_OSSTREAM strm; strm << "globus_module_loader: FATAL error while activating " << GLOBUS_GRAM_CLIENT_MODULE->module_name << ": " << globus_gram_client_error_string(rc); SAGA_ADAPTOR_THROW_NO_CONTEXT(SAGA_OSSTREAM_GETSTRING(strm), saga::NoSuccess); } rc = globus_module_activate (GLOBUS_RSL_MODULE); if (rc != GLOBUS_SUCCESS) { SAGA_OSSTREAM strm; strm << "globus_module_loader: FATAL error while activating " << GLOBUS_RSL_MODULE->module_name << ": " << globus_gram_client_error_string(rc); SAGA_ADAPTOR_THROW_NO_CONTEXT(SAGA_OSSTREAM_GETSTRING(strm), saga::NoSuccess); } #endif #ifdef SAGA_HAVE_GLOBUS_GRIDFTP SAGA_VERBOSE(SAGA_VERBOSE_LEVEL_DEBUG) { std::cout << "globus_loader: activate FTP" << std::endl;; } rc = globus_module_activate (GLOBUS_XIO_MODULE); if (rc != GLOBUS_SUCCESS) { SAGA_OSSTREAM strm; strm << "globus_module_loader: FATAL error while activating globus_xio_module" << ": " << globus_gram_client_error_string(rc); SAGA_ADAPTOR_THROW_NO_CONTEXT(SAGA_OSSTREAM_GETSTRING(strm), saga::NoSuccess); } rc = globus_module_activate (GLOBUS_FTP_CLIENT_MODULE); if (rc != GLOBUS_SUCCESS) { SAGA_OSSTREAM strm; strm << "globus_module_loader: FATAL error while activating " << GLOBUS_FTP_CLIENT_MODULE->module_name << ": " << globus_gram_client_error_string(rc); SAGA_ADAPTOR_THROW_NO_CONTEXT(SAGA_OSSTREAM_GETSTRING(strm), saga::NoSuccess); } #endif #ifdef SAGA_HAVE_GLOBUS_RLS SAGA_VERBOSE(SAGA_VERBOSE_LEVEL_DEBUG) { std::cout << "globus_loader: activate RLS" << std::endl;; } rc = globus_module_activate (GLOBUS_RLS_CLIENT_MODULE); if (rc != GLOBUS_SUCCESS) { SAGA_OSSTREAM strm; strm << "globus_module_loader: FATAL error while activating " << GLOBUS_RLS_CLIENT_MODULE->module_name << ": " << globus_gram_client_error_string(rc); SAGA_ADAPTOR_THROW_NO_CONTEXT(SAGA_OSSTREAM_GETSTRING(strm), saga::NoSuccess); } #endif #ifdef SAGA_HAVE_GLOBUS_GSI SAGA_VERBOSE(SAGA_VERBOSE_LEVEL_DEBUG) { std::cout << "globus_loader: activate GSI" << std::endl;; } rc = globus_module_activate (GLOBUS_GSI_GSS_ASSIST_MODULE); if (rc != GLOBUS_SUCCESS) { SAGA_OSSTREAM strm; strm << "globus_module_loader: FATAL error while activating " << GLOBUS_GSI_GSS_ASSIST_MODULE->module_name << ": " << globus_gram_client_error_string(rc); SAGA_ADAPTOR_THROW_NO_CONTEXT(SAGA_OSSTREAM_GETSTRING(strm), saga::NoSuccess); } #endif #ifdef SAGA_HAVE_GLOBUS_GASS SAGA_VERBOSE(SAGA_VERBOSE_LEVEL_DEBUG) { std::cout << "globus_loader: activate GASS" << std::endl;; } rc = globus_module_activate (GLOBUS_GASS_COPY_MODULE); if (rc != GLOBUS_SUCCESS) { SAGA_OSSTREAM strm; strm << "globus_module_loader: FATAL error while activating " << GLOBUS_GASS_COPY_MODULE->module_name << ": " << globus_gram_client_error_string(rc); SAGA_ADAPTOR_THROW_NO_CONTEXT(SAGA_OSSTREAM_GETSTRING(strm), saga::NoSuccess); } #endif } }; struct globus_init_singleton_tag {}; // avoid to be optimized away globus_init_singleton & get_singleton (void) { boost::spirit::static_ globus_init_singleton_; return globus_init_singleton_.get (); } void globus_init (void) { get_singleton (); // ignore return value } }