Botan 1.10.17
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
10namespace 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}