/usr/share/arc/examples/sdk/Generator.cpp is in nordugrid-arc-dev 4.0.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #include <arc/GUID.h>
#include "Generator.h"
Arc::Logger Generator::logger(Arc::Logger::getRootLogger(), "Generator");
Arc::SimpleCondition Generator::cond;
Generator::Generator() {
// Set up logging
root_destinations = Arc::Logger::getRootLogger().getDestinations();
DataStaging::DTR::LOG_LEVEL = Arc::Logger::getRootLogger().getThreshold();
}
Generator::~Generator() {
logger.msg(Arc::INFO, "Shutting down scheduler");
scheduler.stop();
logger.msg(Arc::INFO, "Scheduler stopped, exiting");
}
void Generator::receiveDTR(DataStaging::DTR_ptr dtr) {
// root logger is disabled in Scheduler thread so need to add it here
Arc::Logger::getRootLogger().addDestinations(root_destinations);
logger.msg(Arc::INFO, "Received DTR %s back from scheduler in state %s", dtr->get_id(), dtr->get_status().str());
Arc::Logger::getRootLogger().removeDestinations();
// DTR logger destinations can be destroyed when DTR has finished
dtr->get_logger()->deleteDestinations();
counter.dec();
}
void Generator::start() {
// Starting scheduler with default configuration
logger.msg(Arc::INFO, "Generator started");
logger.msg(Arc::INFO, "Starting DTR threads");
scheduler.SetDumpLocation("/tmp/dtr.log");
scheduler.start();
}
void Generator::run(const std::string& source, const std::string& destination) {
std::string job_id = Arc::UUID();
Arc::initializeCredentialsType cred_type(Arc::initializeCredentialsType::TryCredentials);
Arc::UserConfig cfg(cred_type);
// check credentials
if (!Arc::Credential::IsCredentialsValid(cfg)) {
logger.msg(Arc::ERROR, "No valid credentials found, exiting");
return;
}
cfg.UtilsDirPath(Arc::UserConfig::ARCUSERDIRECTORY);
DataStaging::DTRLogger log(new Arc::Logger(Arc::Logger::getRootLogger(), "DataStaging"));
Arc::LogDestination * dest = new Arc::LogStream(std::cout);
log->addDestination(*dest);
DataStaging::DTR_ptr dtr(new DataStaging::DTR(source, destination, cfg, job_id, Arc::User().get_uid(), log));
if (!(*dtr)) {
logger.msg(Arc::ERROR, "Problem creating dtr (source %s, destination %s)", source, destination);
return;
}
// register callback with DTR
dtr->registerCallback(this,DataStaging::GENERATOR);
dtr->registerCallback(&scheduler,DataStaging::SCHEDULER);
dtr->set_tries_left(5);
DataStaging::DTR::push(dtr, DataStaging::SCHEDULER);
counter.inc();
}
|