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
111 static void HandleSignal(
int signal_value);
129 static int parse_lockfile_name(
char* lockfile_name_base,
lockfile_data* result);
141 static int create_lockfile(
const char* directory,
char* lockfile_name,
lockfile_data* lock_data,
int max_seq_no);
171 static int at_front(
const char* directory,
char* lockfile_name,
lockfile_data* lock_data,
int cand_seq_no);
187 int wait_for_write_lock(
int& next_seq_no);
195 int get_max_seq_number(std::string dir);
202 void SetDirectory(std::string dir);
207 std::signal(SIGINT, &HandleSignal);
208 std::signal(SIGTERM, &HandleSignal);
209 std::signal(SIGQUIT, &HandleSignal);
210 std::signal(SIGSEGV, &HandleSignal);
211 std::signal(SIGBUS, &HandleSignal);
212 std::signal(SIGHUP, &HandleSignal);
213 std::signal(SIGABRT, &HandleSignal);
215 fEnableLegacyMode =
true;
218 init_lockfile_data(&fProcessLockFileData);
221 virtual ~MHO_LockFileHandler(){};
226 std::string fDirectory;
227 MHO_DirectoryInterface fDirInterface;
228 MHO_Tokenizer fTokenizer;
230 bool fEnableLegacyMode;
#define MAX_LOCKNAME_LEN
Definition: MHO_LockFileHandler.hh:22
Class MHO_LockFileHandler uses the singleton pattern.
Definition: MHO_LockFileHandler.hh:59
MHO_LockFileHandler & operator=(MHO_LockFileHandler &&)=delete
void RemoveWriteLock()
Removes a write lock from the file.
Definition: MHO_LockFileHandler.cc:52
void DisableLegacyMode()
Disables legacy mode by setting fEnableLegacyMode to false.
Definition: MHO_LockFileHandler.hh:89
void EnableLegacyMode()
configure the lock handler to write legacy type_2xx file (e.g. GE.X.1.ABCDEF) naming convention....
Definition: MHO_LockFileHandler.hh:84
static MHO_LockFileHandler & GetInstance()
provide public access to the only static instance
Definition: MHO_LockFileHandler.hh:73
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:57
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_AdhocFlagging.hh:18
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