1 #ifndef MHO_LockFileHandler_HH__
2 #define MHO_LockFileHandler_HH__
12 #define LOCK_FILESET_FAIL -6
13 #define LOCK_TIMEOUT_ERROR -5
14 #define LOCK_FILE_ERROR -4
15 #define LOCK_STALE_ERROR -3
16 #define LOCK_PARSE_ERROR -2
17 #define LOCK_PROCESS_NO_PRIORITY -1
18 #define LOCK_STATUS_OK 0
19 #define LOCK_PROCESS_HAS_PRIORITY 1
22 #define MAX_LOCKNAME_LEN 512
76 if(fInstance ==
nullptr)
117 static void HandleSignal(
int signal_value);
135 static int parse_lockfile_name(
char* lockfile_name_base,
lockfile_data* result);
147 static int create_lockfile(
const char* directory,
char* lockfile_name,
lockfile_data* lock_data,
int max_seq_no);
177 static int at_front(
const char* directory,
char* lockfile_name,
lockfile_data* lock_data,
int cand_seq_no);
193 int wait_for_write_lock(
int& next_seq_no);
201 int get_max_seq_number(std::string dir);
208 void SetDirectory(std::string dir);
213 std::signal(SIGINT, &HandleSignal);
214 std::signal(SIGTERM, &HandleSignal);
215 std::signal(SIGQUIT, &HandleSignal);
216 std::signal(SIGSEGV, &HandleSignal);
217 std::signal(SIGBUS, &HandleSignal);
218 std::signal(SIGHUP, &HandleSignal);
219 std::signal(SIGABRT, &HandleSignal);
221 fEnableLegacyMode =
true;
224 init_lockfile_data(&fProcessLockFileData);
227 virtual ~MHO_LockFileHandler(){};
234 std::string fDirectory;
235 MHO_DirectoryInterface fDirInterface;
236 MHO_Tokenizer fTokenizer;
238 bool fEnableLegacyMode;
#define MAX_LOCKNAME_LEN
Definition: MHO_LockFileHandler.hh:22
Class MHO_LockFileHandler uses the singleton pattern.
Definition: MHO_LockFileHandler.hh:60
MHO_LockFileHandler & operator=(MHO_LockFileHandler &&)=delete
void RemoveWriteLock()
Removes a write lock from the file.
Definition: MHO_LockFileHandler.cc:50
void DisableLegacyMode()
Disables legacy mode by setting fEnableLegacyMode to false.
Definition: MHO_LockFileHandler.hh:94
void EnableLegacyMode()
configure the lock handler to write legacy type_2xx file (e.g. GE.X.1.ABCDEF) naming convention....
Definition: MHO_LockFileHandler.hh:89
static MHO_LockFileHandler & GetInstance()
provide public access to the only static instance
Definition: MHO_LockFileHandler.hh:74
MHO_LockFileHandler(MHO_LockFileHandler &&)=delete
MHO_LockFileHandler & operator=(MHO_LockFileHandler const &)=delete
int WaitForWriteLock(std::string directory, int &next_seq_no)
Waits for and acquires a write lock on the specified directory, setting it as the current directory.
Definition: MHO_LockFileHandler.cc:55
MHO_LockFileHandler(MHO_LockFileHandler const &)=delete
void SetIncludeEmptyTokensFalse()
Definition: MHO_Tokenizer.cc:30
void SetDelimiter(const std::string &aDelim)
Definition: MHO_Tokenizer.cc:70
Definition: MHO_ChannelLabeler.hh:17
unsigned int seq_number
Definition: MHO_LockFileHandler.hh:46
char hostname[256]
Definition: MHO_LockFileHandler.hh:50
char active_directory[MAX_LOCKNAME_LEN]
Definition: MHO_LockFileHandler.hh:51
unsigned int pid
Definition: MHO_LockFileHandler.hh:47
unsigned long int time_usec
Definition: MHO_LockFileHandler.hh:49
unsigned long int time_sec
Definition: MHO_LockFileHandler.hh:48
int validity
Definition: MHO_LockFileHandler.hh:45
char lockfile_name[MAX_LOCKNAME_LEN]
Definition: MHO_LockFileHandler.hh:52
struct lockfile_data - struct for holding data about the lock file's creation
Definition: MHO_LockFileHandler.hh:44
Definition: write_lock_mechanism.h:34