libzypp  15.28.6
InterProcessMutex.h
Go to the documentation of this file.
1 
2 #ifndef ZYPP_BASE_INTER_PROCESS_MUTEX_H
3 #define ZYPP_BASE_INTER_PROCESS_MUTEX_H
4 
5 #include <string>
6 #include "zypp/base/Fd.h"
7 #include "zypp/base/Exception.h"
9 #include "zypp/Pathname.h"
10 
11 namespace zypp
12 {
13 namespace base
14 {
15 
17 {
18 public:
19  ZYppLockedException( const std::string & msg_r,
20  const std::string &name,
21  pid_t locker_pid );
22  virtual ~ZYppLockedException() throw();
23  pid_t locker_pid() const { return _locker_pid; }
24  std::string name() const { return _name; }
25 private:
26  pid_t _locker_pid;
27  std::string _name;
28 };
29 
44 {
45 public:
51  {
54  };
55 
59  class Options
60  {
61  public:
77  Options( ConsumerType ptype,
78  const std::string &pname = "zypp",
79  int ptimeout = -1 );
80 
85  void setPath( const Pathname &base );
86 
87  std::string name;
88  int timeout;
90  Pathname base;
91  };
92 
108  InterProcessMutex( const Options &poptions );
109 
115 
116 private:
117  bool isProcessRunning(pid_t pid_r);
118  Pathname lockFilePath() const;
119 private:
120  shared_ptr<Fd> _fd;
122 };
123 
124 
125 } }
126 
127 
128 #endif
129 
options to alter the mutex behavor
Options(ConsumerType ptype, const std::string &pname="zypp", int ptimeout=-1)
Options for a mutex of type ptype with a given name and timeout.
~InterProcessMutex()
Destructor, gives up the lock on the named resource.
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
Definition: NonCopyable.h:26
Inter process scoped lock implementation.
ZYppLockedException(const std::string &msg_r, const std::string &name, pid_t locker_pid)
ConsumerType
Processes can be of two types Reader or Writer.
void setPath(const Pathname &base)
set the path where the lockfile is created.
Base class for Exception.
Definition: Exception.h:143
InterProcessMutex(const Options &poptions)
Creates a mutex with a name and a timeout.