libzypp  11.13.5
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