Botan  1.10.9
mux_noop.cpp
Go to the documentation of this file.
1 /*
2 * No-Op Mutex Factory
3 * (C) 1999-2007 Jack Lloyd
4 *
5 * Distributed under the terms of the Botan license
6 */
7 
8 #include <botan/internal/mux_noop.h>
9 
10 namespace Botan {
11 
12 /*
13 * No-Op Mutex Factory
14 */
16  {
17  class Noop_Mutex : public Mutex
18  {
19  public:
20  class Mutex_State_Error : public Internal_Error
21  {
22  public:
23  Mutex_State_Error(const std::string& where) :
24  Internal_Error("Noop_Mutex::" + where + ": " +
25  "Mutex is already " + where + "ed") {}
26  };
27 
28  void lock()
29  {
30  if(locked)
31  throw Mutex_State_Error("lock");
32  locked = true;
33  }
34 
35  void unlock()
36  {
37  if(!locked)
38  throw Mutex_State_Error("unlock");
39  locked = false;
40  }
41 
42  Noop_Mutex() { locked = false; }
43  private:
44  bool locked;
45  };
46 
47  return new Noop_Mutex;
48  }
49 
50 }