Joedb
10.3.2
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
src
joedb
concurrency
Server_Client.h
Go to the documentation of this file.
1
#ifndef joedb_Server_Client_declared
2
#define joedb_Server_Client_declared
3
4
#include "
joedb/concurrency/Channel.h
"
5
#include "
joedb/concurrency/Keep_Alive_Thread.h
"
6
#include "
joedb/Thread_Safe.h
"
7
#include "
joedb/journal/Buffer.h
"
8
#include "
joedb/journal/Async_Writer.h
"
9
#include "
joedb/error/Logger.h
"
10
11
#include <chrono>
12
13
namespace
joedb
14
{
15
/// @ingroup concurrency
16
class
Server_Client
:
public
Logger
,
public
Ping_Client
17
{
18
friend
class
Server_File
;
19
20
private
:
21
void
locked_ping(
Lock<Channel&>
&lock)
override
;
22
Keep_Alive_Thread
keep_alive;
23
24
void
connect();
25
void
disconnect();
26
27
protected
:
28
mutable
Thread_Safe<Channel&>
channel
;
29
Logger
&
logger
;
30
bool
connected
;
31
32
mutable
Buffer<13>
buffer
;
33
34
int64_t
session_id
;
35
bool
pullonly_server
;
36
int64_t
server_checkpoint
;
37
38
void
download
39
(
40
Async_Writer
&writer,
41
Lock<Channel&>
&lock,
42
int64_t size
43
)
const
;
44
45
void
log
(
const
std::string &message)
noexcept
override
;
46
47
public
:
48
///
49
/// @param keep_alive_interval: a background thread will send a ping
50
/// to the server at this interval. Setting this parameter to zero disables
51
/// the keep-alive background thread.
52
///
53
Server_Client
54
(
55
Channel
&
channel
,
56
Logger
&
logger
=
Logger::dummy_logger
,
57
std::chrono::milliseconds keep_alive_interval = std::chrono::milliseconds(0)
58
);
59
60
int64_t
get_session_id
()
const
{
return
session_id
;}
61
Thread_Safe<Channel&>
&
get_channel
()
override
{
return
channel
;}
62
63
~Server_Client
();
64
};
65
}
66
67
#endif
Async_Writer.h
Buffer.h
Channel.h
Keep_Alive_Thread.h
Logger.h
Thread_Safe.h
joedb::Async_Writer
Definition
Async_Writer.h:10
joedb::Buffer
Definition
Buffer.h:13
joedb::Channel
Definition
Channel.h:10
joedb::Keep_Alive_Thread
Definition
Keep_Alive_Thread.h:31
joedb::Lock
Definition
Thread_Safe.h:25
joedb::Logger
Definition
Logger.h:10
joedb::Logger::dummy_logger
static Logger dummy_logger
Definition
Logger.h:14
joedb::Ping_Client
Definition
Keep_Alive_Thread.h:13
joedb::Server_Client
Definition
Server_Client.h:17
joedb::Server_Client::server_checkpoint
int64_t server_checkpoint
Definition
Server_Client.h:36
joedb::Server_Client::log
void log(const std::string &message) noexcept override
Definition
Server_Client.cpp:10
joedb::Server_Client::get_channel
Thread_Safe< Channel & > & get_channel() override
Definition
Server_Client.h:61
joedb::Server_Client::channel
Thread_Safe< Channel & > channel
Definition
Server_Client.h:28
joedb::Server_Client::pullonly_server
bool pullonly_server
Definition
Server_Client.h:35
joedb::Server_Client::session_id
int64_t session_id
Definition
Server_Client.h:34
joedb::Server_Client::download
void download(Async_Writer &writer, Lock< Channel & > &lock, int64_t size) const
Definition
Server_Client.cpp:86
joedb::Server_Client::get_session_id
int64_t get_session_id() const
Definition
Server_Client.h:60
joedb::Server_Client::connected
bool connected
Definition
Server_Client.h:30
joedb::Server_Client::~Server_Client
~Server_Client()
Definition
Server_Client.cpp:140
joedb::Server_Client::logger
Logger & logger
Definition
Server_Client.h:29
joedb::Server_Client::buffer
Buffer< 13 > buffer
Definition
Server_Client.h:32
joedb::Server_File
Directly read file served from joedb_server.
Definition
Server_File.h:22
joedb::Thread_Safe
Definition
Thread_Safe.h:11
joedb
Definition
Server.cpp:10
Generated by
1.9.8