DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::oks::ReposDirs Struct Reference

Public Member Functions

 ReposDirs (const char *op, const char *cwd, OksKernel *kernel)
 ~ReposDirs ()

Public Attributes

const char * p_repository_root
const char * p_user_repository_root
size_t p_repos_dir_len
size_t p_user_dir_len
const char * p_dir

Static Public Attributes

static std::mutex p_mutex

Detailed Description

Definition at line 4699 of file kernel.cpp.

Constructor & Destructor Documentation

◆ ReposDirs()

dunedaq::oks::ReposDirs::ReposDirs ( const char * op,
const char * cwd,
OksKernel * kernel )

Definition at line 4717 of file kernel.cpp.

4718{
4720 if(OksKernel::get_repository_root().empty()) {
4721 throw RepositoryOperationFailed(op, "the repository-root is not set (check environment variable TDAQ_DB_REPOSITORY)");
4722 }
4723 else {
4725 }
4726
4727 p_user_repository_root = kernel->get_user_repository_root().c_str();
4729 throw RepositoryOperationFailed(op, "the user-repository-root is not set (check environment variable TDAQ_DB_USER_REPOSITORY)");
4730 }
4731 else {
4733 }
4734
4735 p_mutex.lock();
4736
4737 if(strcmp(cwd, p_user_repository_root)) {
4738 if(int result = chdir(p_user_repository_root)) {
4739 p_mutex.unlock();
4740 std::ostringstream text;
4741 text << "chdir (\'" << p_user_repository_root << "\') failed with code " << result << ": " << strerror(errno);
4742 throw RepositoryOperationFailed(op, text.str());
4743 }
4744 p_dir = cwd;
4745 TLOG_DEBUG( 2 ) << "change cwd: \"" << p_user_repository_root << '\"' ;
4746 }
4747 else {
4748 p_dir = 0;
4749 TLOG_DEBUG( 2 ) << "cwd: \"" << p_user_repository_root << "\" is equal to target dir" ;
4750 }
4751}
static const std::string & get_repository_root()
Get OKS repository root.
Definition kernel.cpp:309
#define TLOG_DEBUG(lvl,...)
Definition Logging.hpp:112
const std::string strerror(int error)
Convert C error number to string.
Definition kernel.cpp:119
const char * p_user_repository_root
Definition kernel.cpp:4705
const char * p_repository_root
Definition kernel.cpp:4704
static std::mutex p_mutex
Definition kernel.cpp:4710

◆ ~ReposDirs()

dunedaq::oks::ReposDirs::~ReposDirs ( )

Definition at line 4753 of file kernel.cpp.

4754{
4755 if(p_dir) {
4756 if(int result = chdir(p_dir)) {
4757 Oks::error_msg("ReposDirs::~ReposDirs()")
4758 << "chdir (\'" << p_dir << "\') failed with code " << result << ": " << strerror(errno) << std::endl;
4759 }
4760 TLOG_DEBUG( 2 ) << "restore cwd: \"" << p_dir << '\"' ;
4761 }
4762
4763 p_mutex.unlock();
4764}
static std::ostream & error_msg(const char *)
Definition kernel.cpp:561

Member Data Documentation

◆ p_dir

const char* dunedaq::oks::ReposDirs::p_dir

Definition at line 4708 of file kernel.cpp.

◆ p_mutex

std::mutex dunedaq::oks::ReposDirs::p_mutex
static

Definition at line 4710 of file kernel.cpp.

◆ p_repos_dir_len

size_t dunedaq::oks::ReposDirs::p_repos_dir_len

Definition at line 4706 of file kernel.cpp.

◆ p_repository_root

const char* dunedaq::oks::ReposDirs::p_repository_root

Definition at line 4704 of file kernel.cpp.

◆ p_user_dir_len

size_t dunedaq::oks::ReposDirs::p_user_dir_len

Definition at line 4707 of file kernel.cpp.

◆ p_user_repository_root

const char* dunedaq::oks::ReposDirs::p_user_repository_root

Definition at line 4705 of file kernel.cpp.


The documentation for this struct was generated from the following file: