Botan 1.10.17

mux_pthr.cpp
Go to the documentation of this file.
1 /*
2 * Pthread Mutex
3 * (C) 1999-2007 Jack Lloyd
4 *
5 * Distributed under the terms of the Botan license
6 */
7
8 #include <botan/internal/mux_pthr.h>
9 #include <botan/exceptn.h>
10
11 #ifndef _POSIX_C_SOURCE
12 #define _POSIX_C_SOURCE 199506
13 #endif
14
15 #include <pthread.h>
16
17 namespace Botan {
18
19 /*
20 * Pthread Mutex Factory
21 */
22 Mutex* Pthread_Mutex_Factory::make()
23 {
24
25 class Pthread_Mutex : public Mutex
26 {
27 public:
28 void lock()
29 {
30 if(pthread_mutex_lock(&mutex) != 0)
31 throw Invalid_State("Pthread_Mutex::lock: Error occured");
32 }
33
34 void unlock()
35 {
36 if(pthread_mutex_unlock(&mutex) != 0)
37 throw Invalid_State("Pthread_Mutex::unlock: Error occured");
38 }
39
40 Pthread_Mutex()
41 {
42 if(pthread_mutex_init(&mutex, 0) != 0)
43 throw Invalid_State("Pthread_Mutex: initialization failed");
44 }
45
46 ~Pthread_Mutex()
47 {
48 pthread_mutex_destroy(&mutex);
49 }
50 private:
51 pthread_mutex_t mutex;
52 };
53
54 return new Pthread_Mutex();
55 }
56
57 }
Botan::Invalid_State
Definition: exceptn.h:25
Botan
Definition: algo_base.h:14
Botan::Mutex
Definition: mutex.h:18
Botan::Pthread_Mutex_Factory::make
Mutex * make()
Definition: mux_pthr.cpp:22