MXS-2196: Replace raw pointers with SListener references
Replaced raw pointers in function parameter with const SListener references. This removes the need to pass raw pointers as arguments and all access is done via smart pointers.
This commit is contained in:
@ -67,7 +67,7 @@ using SListener = std::shared_ptr<SERV_LISTENER>;
|
|||||||
* @param listener Listener to serialize
|
* @param listener Listener to serialize
|
||||||
* @return True if the serialization of the listener was successful, false if it fails
|
* @return True if the serialization of the listener was successful, false if it fails
|
||||||
*/
|
*/
|
||||||
bool listener_serialize(const SERV_LISTENER* listener);
|
bool listener_serialize(const SListener& listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Convert listener to JSON
|
* @brief Convert listener to JSON
|
||||||
@ -76,7 +76,7 @@ bool listener_serialize(const SERV_LISTENER* listener);
|
|||||||
*
|
*
|
||||||
* @return Converted listener
|
* @return Converted listener
|
||||||
*/
|
*/
|
||||||
json_t* listener_to_json(const SERV_LISTENER* listener);
|
json_t* listener_to_json(const SListener& listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new listener
|
* Create a new listener
|
||||||
@ -92,7 +92,7 @@ json_t* listener_to_json(const SERV_LISTENER* listener);
|
|||||||
*
|
*
|
||||||
* @return New listener or nullptr on error
|
* @return New listener or nullptr on error
|
||||||
*/
|
*/
|
||||||
SERV_LISTENER* listener_alloc(SERVICE* service,
|
SListener listener_alloc(SERVICE* service,
|
||||||
const char* name,
|
const char* name,
|
||||||
const char* protocol,
|
const char* protocol,
|
||||||
const char* address,
|
const char* address,
|
||||||
@ -108,7 +108,7 @@ SERV_LISTENER* listener_alloc(SERVICE* service,
|
|||||||
*
|
*
|
||||||
* @param listener Listener to free
|
* @param listener Listener to free
|
||||||
*/
|
*/
|
||||||
void listener_free(SERV_LISTENER* listener);
|
void listener_free(const SListener& listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroy a listener
|
* Destroy a listener
|
||||||
@ -118,7 +118,7 @@ void listener_free(SERV_LISTENER* listener);
|
|||||||
*
|
*
|
||||||
* @param listener Listener to destroy
|
* @param listener Listener to destroy
|
||||||
*/
|
*/
|
||||||
void listener_destroy(SERV_LISTENER* listener);
|
void listener_destroy(const SListener& listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stop a listener
|
* Stop a listener
|
||||||
@ -127,7 +127,7 @@ void listener_destroy(SERV_LISTENER* listener);
|
|||||||
*
|
*
|
||||||
* @return True if listener was successfully stopped
|
* @return True if listener was successfully stopped
|
||||||
*/
|
*/
|
||||||
bool listener_stop(SERV_LISTENER* listener);
|
bool listener_stop(const SListener& listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start a stopped listener
|
* Start a stopped listener
|
||||||
@ -136,7 +136,7 @@ bool listener_stop(SERV_LISTENER* listener);
|
|||||||
*
|
*
|
||||||
* @return True if listener was successfully started
|
* @return True if listener was successfully started
|
||||||
*/
|
*/
|
||||||
bool listener_start(SERV_LISTENER* listener);
|
bool listener_start(const SListener& listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find a listener
|
* Find a listener
|
||||||
@ -191,7 +191,7 @@ void SSL_LISTENER_free(SSL_LISTENER* ssl);
|
|||||||
*
|
*
|
||||||
* @return True if listener is active
|
* @return True if listener is active
|
||||||
*/
|
*/
|
||||||
bool listener_is_active(SERV_LISTENER* listener);
|
bool listener_is_active(const SListener& listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Modify listener active state
|
* @brief Modify listener active state
|
||||||
@ -199,7 +199,7 @@ bool listener_is_active(SERV_LISTENER* listener);
|
|||||||
* @param listener Listener to modify
|
* @param listener Listener to modify
|
||||||
* @param active True to activate, false to disable
|
* @param active True to activate, false to disable
|
||||||
*/
|
*/
|
||||||
void listener_set_active(SERV_LISTENER* listener, bool active);
|
void listener_set_active(const SListener& listener, bool active);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get listener state as a string
|
* Get listener state as a string
|
||||||
@ -208,4 +208,4 @@ void listener_set_active(SERV_LISTENER* listener, bool active);
|
|||||||
*
|
*
|
||||||
* @return State of the listener as a string
|
* @return State of the listener as a string
|
||||||
*/
|
*/
|
||||||
const char* listener_state_to_string(const SERV_LISTENER* listener);
|
const char* listener_state_to_string(const SListener& listener);
|
||||||
|
@ -74,7 +74,7 @@ SERV_LISTENER::~SERV_LISTENER()
|
|||||||
SSL_LISTENER_free(ssl);
|
SSL_LISTENER_free(ssl);
|
||||||
}
|
}
|
||||||
|
|
||||||
SERV_LISTENER* listener_alloc(SERVICE* service,
|
SListener listener_alloc(SERVICE* service,
|
||||||
const char* name,
|
const char* name,
|
||||||
const char* protocol,
|
const char* protocol,
|
||||||
const char* address,
|
const char* address,
|
||||||
@ -102,27 +102,25 @@ SERV_LISTENER* listener_alloc(SERVICE* service,
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto listener = new(std::nothrow) SERV_LISTENER(service, name, address, port, protocol, authenticator,
|
SListener listener(new(std::nothrow) SERV_LISTENER(service, name, address, port, protocol, authenticator,
|
||||||
auth_options, auth_instance, ssl);
|
auth_options, auth_instance, ssl));
|
||||||
|
|
||||||
if (listener)
|
if (listener)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> guard(listener_lock);
|
std::lock_guard<std::mutex> guard(listener_lock);
|
||||||
all_listeners.emplace_back(listener);
|
all_listeners.push_back(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
return listener;
|
return listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
void listener_free(SERV_LISTENER* listener)
|
void listener_free(const SListener& listener)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> guard(listener_lock);
|
std::lock_guard<std::mutex> guard(listener_lock);
|
||||||
all_listeners.remove_if([&](const SListener& l) {
|
all_listeners.remove(listener);
|
||||||
return l.get() == listener;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void listener_destroy(SERV_LISTENER* listener)
|
void listener_destroy(const SListener& listener)
|
||||||
{
|
{
|
||||||
listener_set_active(listener, false);
|
listener_set_active(listener, false);
|
||||||
listener_stop(listener);
|
listener_stop(listener);
|
||||||
@ -133,7 +131,7 @@ void listener_destroy(SERV_LISTENER* listener)
|
|||||||
listener->listener->fd = -1;
|
listener->listener->fd = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool listener_stop(SERV_LISTENER* listener)
|
bool listener_stop(const SListener& listener)
|
||||||
{
|
{
|
||||||
bool rval = false;
|
bool rval = false;
|
||||||
mxb_assert(listener->listener);
|
mxb_assert(listener->listener);
|
||||||
@ -148,7 +146,7 @@ bool listener_stop(SERV_LISTENER* listener)
|
|||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool listener_start(SERV_LISTENER* listener)
|
bool listener_start(const SListener& listener)
|
||||||
{
|
{
|
||||||
bool rval = true;
|
bool rval = true;
|
||||||
mxb_assert(listener->listener);
|
mxb_assert(listener->listener);
|
||||||
@ -492,7 +490,7 @@ static RSA* tmp_rsa_callback(SSL* s, int is_export, int keylength)
|
|||||||
* @param filename Filename where configuration is written
|
* @param filename Filename where configuration is written
|
||||||
* @return True on success, false on error
|
* @return True on success, false on error
|
||||||
*/
|
*/
|
||||||
static bool create_listener_config(const SERV_LISTENER* listener, const char* filename)
|
static bool create_listener_config(const SListener& listener, const char* filename)
|
||||||
{
|
{
|
||||||
int file = open(filename, O_EXCL | O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
|
int file = open(filename, O_EXCL | O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
|
||||||
|
|
||||||
@ -530,7 +528,7 @@ static bool create_listener_config(const SERV_LISTENER* listener, const char* fi
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool listener_serialize(const SERV_LISTENER* listener)
|
bool listener_serialize(const SListener& listener)
|
||||||
{
|
{
|
||||||
bool rval = false;
|
bool rval = false;
|
||||||
char filename[PATH_MAX];
|
char filename[PATH_MAX];
|
||||||
@ -572,7 +570,7 @@ bool listener_serialize(const SERV_LISTENER* listener)
|
|||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
json_t* listener_to_json(const SERV_LISTENER* listener)
|
json_t* listener_to_json(const SListener& listener)
|
||||||
{
|
{
|
||||||
json_t* param = json_object();
|
json_t* param = json_object();
|
||||||
json_object_set_new(param, "address", json_string(listener->address.c_str()));
|
json_object_set_new(param, "address", json_string(listener->address.c_str()));
|
||||||
@ -600,7 +598,7 @@ json_t* listener_to_json(const SERV_LISTENER* listener)
|
|||||||
|
|
||||||
if (listener->listener->authfunc.diagnostic_json)
|
if (listener->listener->authfunc.diagnostic_json)
|
||||||
{
|
{
|
||||||
json_t* diag = listener->listener->authfunc.diagnostic_json(listener);
|
json_t* diag = listener->listener->authfunc.diagnostic_json(listener.get());
|
||||||
|
|
||||||
if (diag)
|
if (diag)
|
||||||
{
|
{
|
||||||
@ -616,17 +614,17 @@ json_t* listener_to_json(const SERV_LISTENER* listener)
|
|||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
void listener_set_active(SERV_LISTENER* listener, bool active)
|
void listener_set_active(const SListener& listener, bool active)
|
||||||
{
|
{
|
||||||
atomic_store_int32(&listener->active, active ? 1 : 0);
|
atomic_store_int32(&listener->active, active ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool listener_is_active(SERV_LISTENER* listener)
|
bool listener_is_active(const SListener& listener)
|
||||||
{
|
{
|
||||||
return atomic_load_int32(&listener->active);
|
return atomic_load_int32(&listener->active);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* listener_state_to_string(const SERV_LISTENER* listener)
|
const char* listener_state_to_string(const SListener& listener)
|
||||||
{
|
{
|
||||||
mxb_assert(listener);
|
mxb_assert(listener);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user