1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-07-28 20:02:00 +03:00

Refactored server_service out of server_state.

This commit is contained in:
Teemu Ollakka
2018-06-18 17:45:24 +03:00
parent ef5751943d
commit cf231bdf2d
14 changed files with 142 additions and 89 deletions

View File

@ -2,6 +2,7 @@
// Copyright (C) 2018 Codership Oy <info@codership.com>
//
/** @file server_service.hpp
*
* An abstract interface for a DBMS server services.
@ -9,6 +10,11 @@
* the wsrep-lib.
*/
#ifndef WSREP_SERVER_SERVICE_HPP
#define WSREP_SERVER_SERVICE_HPP
#include <string>
namespace wsrep
{
class client_state;
@ -99,3 +105,5 @@ namespace wsrep
};
}
#endif // WSREP_SERVER_SERVICE_HPP

View File

@ -87,7 +87,7 @@ namespace wsrep
*
*
*/
class server_state : public wsrep::server_service
class server_state
{
public:
/**
@ -157,6 +157,9 @@ namespace wsrep
virtual ~server_state();
wsrep::server_service& server_service() { return server_service_; }
/**
* Return human readable server name.
*
@ -347,6 +350,7 @@ namespace wsrep
*/
server_state(wsrep::mutex& mutex,
wsrep::condition_variable& cond,
wsrep::server_service& server_service,
const std::string& name,
const std::string& id,
const std::string& address,
@ -354,6 +358,7 @@ namespace wsrep
enum rollback_mode rollback_mode)
: mutex_(mutex)
, cond_(cond)
, server_service_(server_service)
, state_(s_disconnected)
, state_waiters_(n_states_)
, streaming_appliers_()
@ -375,6 +380,7 @@ namespace wsrep
wsrep::mutex& mutex_;
wsrep::condition_variable& cond_;
wsrep::server_service& server_service_;
enum state state_;
mutable std::vector<int> state_waiters_;
typedef std::map<std::pair<wsrep::id, wsrep::transaction_id>, wsrep::client_state*> streaming_appliers_map;
@ -391,15 +397,15 @@ namespace wsrep
class client_deleter
{
public:
client_deleter(wsrep::server_state& server_state)
: server_state_(server_state)
client_deleter(wsrep::server_service& server_service)
: server_service_(server_service)
{ }
void operator()(wsrep::client_state* client_state)
{
server_state_.release_client_state(client_state);
server_service_.release_client_state(client_state);
}
private:
wsrep::server_state& server_state_;
wsrep::server_service& server_service_;
};
static inline std::string to_string(enum wsrep::server_state::state state)

View File

@ -137,6 +137,7 @@ namespace wsrep
void debug_log_state(const char*) const;
wsrep::provider& provider_;
wsrep::server_service& server_service_;
wsrep::client_state& client_state_;
wsrep::transaction_id id_;
enum state state_;