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 4469 of file kernel.cpp.

Constructor & Destructor Documentation

◆ ReposDirs()

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

Definition at line 4486 of file kernel.cpp.

4487{
4489 if (OksKernel::get_repository_root().empty()) {
4491 "the repository-root is not set (check environment variable TDAQ_DB_REPOSITORY)");
4492 } else {
4494 }
4495
4496 p_user_repository_root = kernel->get_user_repository_root().c_str();
4497 if (!*p_user_repository_root) {
4499 op, "the user-repository-root is not set (check environment variable TDAQ_DB_USER_REPOSITORY)");
4500 } else {
4502 }
4503
4504 p_mutex.lock();
4505
4506 if (strcmp(cwd, p_user_repository_root)) {
4507 if (int result = chdir(p_user_repository_root)) {
4508 p_mutex.unlock();
4509 std::ostringstream text;
4510 text << "chdir (\'" << p_user_repository_root << "\') failed with code " << result << ": " << strerror(errno);
4511 throw RepositoryOperationFailed(op, text.str());
4512 }
4513 p_dir = cwd;
4514 TLOG_DEBUG(2) << "change cwd: \"" << p_user_repository_root << '\"';
4515 } else {
4516 p_dir = 0;
4517 TLOG_DEBUG(2) << "cwd: \"" << p_user_repository_root << "\" is equal to target dir";
4518 }
4519}
static const std::string & get_repository_root()
Get OKS repository root.
Definition kernel.cpp:280
RepositoryOperationFailed(const char *op, const exception &reason) noexcept
Definition kernel.hpp:120
#define TLOG_DEBUG(lvl,...)
Definition Logging.hpp:116
const std::string strerror(int error)
Convert C error number to string.
Definition kernel.cpp:111
const char * p_user_repository_root
Definition kernel.cpp:4476
const char * p_repository_root
Definition kernel.cpp:4475
static std::mutex p_mutex
Definition kernel.cpp:4481

◆ ~ReposDirs()

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

Definition at line 4521 of file kernel.cpp.

4522{
4523 if (p_dir) {
4524 if (int result = chdir(p_dir)) {
4525 Oks::error_msg("ReposDirs::~ReposDirs()")
4526 << "chdir (\'" << p_dir << "\') failed with code " << result << ": " << strerror(errno) << std::endl;
4527 }
4528 TLOG_DEBUG(2) << "restore cwd: \"" << p_dir << '\"';
4529 }
4530
4531 p_mutex.unlock();
4532}
static std::ostream & error_msg(const char *)
Definition kernel.cpp:511

Member Data Documentation

◆ p_dir

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

Definition at line 4479 of file kernel.cpp.

◆ p_mutex

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

Definition at line 4481 of file kernel.cpp.

◆ p_repos_dir_len

size_t dunedaq::oks::ReposDirs::p_repos_dir_len

Definition at line 4477 of file kernel.cpp.

◆ p_repository_root

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

Definition at line 4475 of file kernel.cpp.

◆ p_user_dir_len

size_t dunedaq::oks::ReposDirs::p_user_dir_len

Definition at line 4478 of file kernel.cpp.

◆ p_user_repository_root

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

Definition at line 4476 of file kernel.cpp.


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