Joedb 9.1.4
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Thread_Safe_Channel.h
Go to the documentation of this file.
1#ifndef joedb_Thread_Safe_Channel_declared
2#define joedb_Thread_Safe_Channel_declared
3
5
6#include <mutex>
7
8namespace joedb
9{
10 ////////////////////////////////////////////////////////////////////////////
12 ////////////////////////////////////////////////////////////////////////////
13 {
14 friend class Channel_Lock;
15
16 private:
17 Channel &channel;
18 std::mutex mutex;
19
20 public:
21 Thread_Safe_Channel(Channel &channel): channel(channel) {}
22 };
23
24 ////////////////////////////////////////////////////////////////////////////
26 ////////////////////////////////////////////////////////////////////////////
27 {
28 private:
29 Channel &channel;
30 std::unique_lock<std::mutex> lock;
31
32 public:
38
39 operator std::unique_lock<std::mutex> &() {return lock;}
40
41 size_t write_some(const char *data, size_t size)
42 {
43 return channel.write_some(data, size);
44 }
45
46 size_t read_some(char *data, size_t size)
47 {
48 return channel.read_some(data, size);
49 }
50
51 void write(const char *data, size_t size)
52 {
53 channel.write(data, size);
54 }
55
56 void read(char *data, size_t size)
57 {
58 channel.read(data, size);
59 }
60 };
61}
62
63#endif
Channel_Lock(Thread_Safe_Channel &thread_safe_channel)
void write(const char *data, size_t size)
void read(char *data, size_t size)
size_t write_some(const char *data, size_t size)
size_t read_some(char *data, size_t size)
virtual size_t write_some(const char *data, size_t size)=0
void write(const char *data, size_t size)
Definition Channel.cpp:5
void read(char *data, size_t size)
Definition Channel.cpp:12
virtual size_t read_some(char *data, size_t size)=0
Thread_Safe_Channel(Channel &channel)
Definition Blob.h:7