MXS-2220 Combine anonymous namespaces
Also clean up file local variables.
This commit is contained in:
@ -69,12 +69,62 @@ const char CN_PERSISTMAXTIME[] = "persistmaxtime";
|
|||||||
const char CN_PERSISTPOOLMAX[] = "persistpoolmax";
|
const char CN_PERSISTPOOLMAX[] = "persistpoolmax";
|
||||||
const char CN_PROXY_PROTOCOL[] = "proxy_protocol";
|
const char CN_PROXY_PROTOCOL[] = "proxy_protocol";
|
||||||
|
|
||||||
static std::mutex server_lock;
|
namespace
|
||||||
static std::list<Server*> all_servers;
|
{
|
||||||
static const char ERR_CANNOT_MODIFY[] = "The server is monitored, so only the maintenance status can be "
|
|
||||||
"set/cleared manually. Status was not modified.";
|
struct ThisUnit
|
||||||
static const char WRN_REQUEST_OVERWRITTEN[] = "Previous maintenance request was not yet read by the monitor "
|
{
|
||||||
"and was overwritten.";
|
std::mutex ave_write_mutex; /**< TODO: Move to Server */
|
||||||
|
std::mutex all_servers_lock; /**< Protects access to all_servers */
|
||||||
|
std::list<Server*> all_servers; /**< Global list of all servers */
|
||||||
|
} this_unit;
|
||||||
|
|
||||||
|
const char ERR_CANNOT_MODIFY[] = "The server is monitored, so only the maintenance status can be "
|
||||||
|
"set/cleared manually. Status was not modified.";
|
||||||
|
const char WRN_REQUEST_OVERWRITTEN[] = "Previous maintenance request was not yet read by the monitor "
|
||||||
|
"and was overwritten.";
|
||||||
|
|
||||||
|
// Converts Server::ConfigParam to MXS_CONFIG_PARAM and keeps them in the same order. Required for some
|
||||||
|
// functions taking MXS_CONFIG_PARAMs as arguments.
|
||||||
|
class ParamAdaptor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ParamAdaptor(const std::vector<Server::ConfigParameter>& parameters)
|
||||||
|
{
|
||||||
|
for (const auto& elem : parameters)
|
||||||
|
{
|
||||||
|
// Allocate and add new head element.
|
||||||
|
MXS_CONFIG_PARAMETER* new_elem =
|
||||||
|
static_cast<MXS_CONFIG_PARAMETER*>(MXS_MALLOC(sizeof(MXS_CONFIG_PARAMETER)));
|
||||||
|
new_elem->name = MXS_STRDUP(elem.name.c_str());
|
||||||
|
new_elem->value = MXS_STRDUP(elem.value.c_str());
|
||||||
|
new_elem->next = m_params;
|
||||||
|
m_params = new_elem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
~ParamAdaptor()
|
||||||
|
{
|
||||||
|
while (m_params)
|
||||||
|
{
|
||||||
|
auto elem = m_params;
|
||||||
|
m_params = elem->next;
|
||||||
|
MXS_FREE(elem->name);
|
||||||
|
MXS_FREE(elem->value);
|
||||||
|
MXS_FREE(elem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
operator MXS_CONFIG_PARAMETER*()
|
||||||
|
{
|
||||||
|
return m_params;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
MXS_CONFIG_PARAMETER* m_params = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Server* Server::server_alloc(const char* name, MXS_CONFIG_PARAMETER* params)
|
Server* Server::server_alloc(const char* name, MXS_CONFIG_PARAMETER* params)
|
||||||
{
|
{
|
||||||
@ -175,9 +225,9 @@ Server* Server::server_alloc(const char* name, MXS_CONFIG_PARAMETER* params)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Guard guard(server_lock);
|
Guard guard(this_unit.all_servers_lock);
|
||||||
// This keeps the order of the servers the same as in 2.2
|
// This keeps the order of the servers the same as in 2.2
|
||||||
all_servers.push_front(server);
|
this_unit.all_servers.push_front(server);
|
||||||
|
|
||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
@ -194,10 +244,10 @@ void server_free(Server* server)
|
|||||||
mxb_assert(server);
|
mxb_assert(server);
|
||||||
|
|
||||||
{
|
{
|
||||||
Guard guard(server_lock);
|
Guard guard(this_unit.all_servers_lock);
|
||||||
auto it = std::find(all_servers.begin(), all_servers.end(), server);
|
auto it = std::find(this_unit.all_servers.begin(), this_unit.all_servers.end(), server);
|
||||||
mxb_assert(it != all_servers.end());
|
mxb_assert(it != this_unit.all_servers.end());
|
||||||
all_servers.erase(it);
|
this_unit.all_servers.erase(it);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clean up session and free the memory */
|
/* Clean up session and free the memory */
|
||||||
@ -271,16 +321,14 @@ DCB* Server::get_persistent_dcb(const string& user, const string& ip, const stri
|
|||||||
*/
|
*/
|
||||||
SERVER* server_find_by_unique_name(const char* name)
|
SERVER* server_find_by_unique_name(const char* name)
|
||||||
{
|
{
|
||||||
Guard guard(server_lock);
|
Guard guard(this_unit.all_servers_lock);
|
||||||
|
for (Server* server : this_unit.all_servers)
|
||||||
for (Server* server : all_servers)
|
|
||||||
{
|
{
|
||||||
if (server->is_active && strcmp(server->name, name) == 0)
|
if (server->is_active && strcmp(server->name, name) == 0)
|
||||||
{
|
{
|
||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -334,16 +382,14 @@ int server_find_by_unique_names(char** server_names, int size, SERVER*** output)
|
|||||||
*/
|
*/
|
||||||
SERVER* server_find(const char* servname, unsigned short port)
|
SERVER* server_find(const char* servname, unsigned short port)
|
||||||
{
|
{
|
||||||
Guard guard(server_lock);
|
Guard guard(this_unit.all_servers_lock);
|
||||||
|
for (Server* server : this_unit.all_servers)
|
||||||
for (Server* server : all_servers)
|
|
||||||
{
|
{
|
||||||
if (server->is_active && strcmp(server->address, servname) == 0 && server->port == port)
|
if (server->is_active && strcmp(server->address, servname) == 0 && server->port == port)
|
||||||
{
|
{
|
||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,9 +418,8 @@ void printServer(const SERVER* server)
|
|||||||
*/
|
*/
|
||||||
void printAllServers()
|
void printAllServers()
|
||||||
{
|
{
|
||||||
Guard guard(server_lock);
|
Guard guard(this_unit.all_servers_lock);
|
||||||
|
for (Server* server : this_unit.all_servers)
|
||||||
for (Server* server : all_servers)
|
|
||||||
{
|
{
|
||||||
if (server->is_active)
|
if (server->is_active)
|
||||||
{
|
{
|
||||||
@ -385,8 +430,8 @@ void printAllServers()
|
|||||||
|
|
||||||
void Server::dprintAllServers(DCB* dcb)
|
void Server::dprintAllServers(DCB* dcb)
|
||||||
{
|
{
|
||||||
Guard guard(server_lock);
|
Guard guard(this_unit.all_servers_lock);
|
||||||
for (Server* server : all_servers)
|
for (Server* server : this_unit.all_servers)
|
||||||
{
|
{
|
||||||
if (server->is_active)
|
if (server->is_active)
|
||||||
{
|
{
|
||||||
@ -556,9 +601,9 @@ void Server::dprintPersistentDCBs(DCB* pdcb, const Server* server)
|
|||||||
|
|
||||||
void Server::dListServers(DCB* dcb)
|
void Server::dListServers(DCB* dcb)
|
||||||
{
|
{
|
||||||
Guard guard(server_lock);
|
Guard guard(this_unit.all_servers_lock);
|
||||||
bool have_servers = std::any_of(all_servers.begin(),
|
bool have_servers = std::any_of(this_unit.all_servers.begin(),
|
||||||
all_servers.end(),
|
this_unit.all_servers.end(),
|
||||||
[](Server* s) {
|
[](Server* s) {
|
||||||
return s->is_active;
|
return s->is_active;
|
||||||
});
|
});
|
||||||
@ -574,7 +619,7 @@ void Server::dListServers(DCB* dcb)
|
|||||||
"Status");
|
"Status");
|
||||||
dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n");
|
dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n");
|
||||||
|
|
||||||
for (Server* server : all_servers)
|
for (Server* server : this_unit.all_servers)
|
||||||
{
|
{
|
||||||
if (server->is_active)
|
if (server->is_active)
|
||||||
{
|
{
|
||||||
@ -826,9 +871,9 @@ std::unique_ptr<ResultSet> serverGetList()
|
|||||||
{
|
{
|
||||||
std::unique_ptr<ResultSet> set =
|
std::unique_ptr<ResultSet> set =
|
||||||
ResultSet::create({"Server", "Address", "Port", "Connections", "Status"});
|
ResultSet::create({"Server", "Address", "Port", "Connections", "Status"});
|
||||||
Guard guard(server_lock);
|
|
||||||
|
|
||||||
for (Server* server : all_servers)
|
Guard guard(this_unit.all_servers_lock);
|
||||||
|
for (Server* server : this_unit.all_servers)
|
||||||
{
|
{
|
||||||
if (server_is_active(server))
|
if (server_is_active(server))
|
||||||
{
|
{
|
||||||
@ -850,7 +895,7 @@ std::unique_ptr<ResultSet> serverGetList()
|
|||||||
*/
|
*/
|
||||||
void server_update_address(SERVER* server, const char* address)
|
void server_update_address(SERVER* server, const char* address)
|
||||||
{
|
{
|
||||||
Guard guard(server_lock);
|
Guard guard(this_unit.all_servers_lock);
|
||||||
|
|
||||||
if (server && address)
|
if (server && address)
|
||||||
{
|
{
|
||||||
@ -867,7 +912,7 @@ void server_update_address(SERVER* server, const char* address)
|
|||||||
*/
|
*/
|
||||||
void server_update_port(SERVER* server, unsigned short port)
|
void server_update_port(SERVER* server, unsigned short port)
|
||||||
{
|
{
|
||||||
Guard guard(server_lock);
|
Guard guard(this_unit.all_servers_lock);
|
||||||
|
|
||||||
if (server && port > 0)
|
if (server && port > 0)
|
||||||
{
|
{
|
||||||
@ -975,53 +1020,6 @@ uint64_t server_get_version(const SERVER* server)
|
|||||||
return atomic_load_uint64(&server->version);
|
return atomic_load_uint64(&server->version);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
|
|
||||||
// Converts Server::ConfigParam to MXS_CONFIG_PARAM and keeps them in the same order. Required for some
|
|
||||||
// functions taking MXS_CONFIG_PARAMs as arguments.
|
|
||||||
class ParamAdaptor
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ParamAdaptor(const std::vector<Server::ConfigParameter>& parameters)
|
|
||||||
{
|
|
||||||
for (const auto& elem : parameters)
|
|
||||||
{
|
|
||||||
// Allocate and add new head element.
|
|
||||||
MXS_CONFIG_PARAMETER* new_elem =
|
|
||||||
static_cast<MXS_CONFIG_PARAMETER*>(MXS_MALLOC(sizeof(MXS_CONFIG_PARAMETER)));
|
|
||||||
new_elem->name = MXS_STRDUP(elem.name.c_str());
|
|
||||||
new_elem->value = MXS_STRDUP(elem.value.c_str());
|
|
||||||
new_elem->next = m_params;
|
|
||||||
m_params = new_elem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
~ParamAdaptor()
|
|
||||||
{
|
|
||||||
while (m_params)
|
|
||||||
{
|
|
||||||
auto elem = m_params;
|
|
||||||
m_params = elem->next;
|
|
||||||
MXS_FREE(elem->name);
|
|
||||||
MXS_FREE(elem->value);
|
|
||||||
MXS_FREE(elem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
operator MXS_CONFIG_PARAMETER*()
|
|
||||||
{
|
|
||||||
return m_params;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
// Holds the temporary configuration objects. Needs to be a list so that
|
|
||||||
// inserts into the container won't invalidate the next pointers
|
|
||||||
MXS_CONFIG_PARAMETER* m_params = nullptr;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a server configuration at the location pointed by @c filename
|
* Creates a server configuration at the location pointed by @c filename
|
||||||
* TODO: Move to member
|
* TODO: Move to member
|
||||||
@ -1342,9 +1340,9 @@ json_t* server_to_json(const Server* server, const char* host)
|
|||||||
json_t* server_list_to_json(const char* host)
|
json_t* server_list_to_json(const char* host)
|
||||||
{
|
{
|
||||||
json_t* data = json_array();
|
json_t* data = json_array();
|
||||||
Guard guard(server_lock);
|
|
||||||
|
|
||||||
for (Server* server : all_servers)
|
Guard guard(this_unit.all_servers_lock);
|
||||||
|
for (Server* server : this_unit.all_servers)
|
||||||
{
|
{
|
||||||
if (server_is_active(server))
|
if (server_is_active(server))
|
||||||
{
|
{
|
||||||
@ -1366,17 +1364,10 @@ bool server_set_disk_space_threshold(SERVER* server, const char* disk_space_thre
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
std::mutex ave_write_mutex;
|
|
||||||
}
|
|
||||||
|
|
||||||
void server_add_response_average(SERVER* srv, double ave, int num_samples)
|
void server_add_response_average(SERVER* srv, double ave, int num_samples)
|
||||||
{
|
{
|
||||||
Server* server = static_cast<Server*>(srv);
|
Server* server = static_cast<Server*>(srv);
|
||||||
|
Guard guard(this_unit.ave_write_mutex);
|
||||||
|
|
||||||
std::lock_guard<std::mutex> guard(ave_write_mutex);
|
|
||||||
server->response_time_add(ave, num_samples);
|
server->response_time_add(ave, num_samples);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1433,8 +1424,8 @@ void Server::response_time_add(double ave, int num_samples)
|
|||||||
|
|
||||||
Server* Server::find_by_unique_name(const string& name)
|
Server* Server::find_by_unique_name(const string& name)
|
||||||
{
|
{
|
||||||
Guard guard(server_lock);
|
Guard guard(this_unit.all_servers_lock);
|
||||||
for (Server* server : all_servers)
|
for (Server* server : this_unit.all_servers)
|
||||||
{
|
{
|
||||||
if (server->is_active && name == server->name)
|
if (server->is_active && name == server->name)
|
||||||
{
|
{
|
||||||
@ -1462,4 +1453,4 @@ bool Server::is_custom_parameter(const string& name) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user