diff --git a/src/ebusd/network.cpp b/src/ebusd/network.cpp index 56795f20..b4ec6239 100644 --- a/src/ebusd/network.cpp +++ b/src/ebusd/network.cpp @@ -168,7 +168,8 @@ void Connection::run() { // wait for result logDebug(lf_network, "[%05d] wait for result", getID()); - string result = message.getResult(); + string result; + message.getResult(&result); if (!m_socket->isValid()) { break; diff --git a/src/ebusd/network.h b/src/ebusd/network.h index a2c0ae6d..00971b39 100644 --- a/src/ebusd/network.h +++ b/src/ebusd/network.h @@ -46,7 +46,7 @@ class NetMessage { * Constructor. * @param isHttp whether this is a HTTP message. */ - explicit NetMessage(const bool isHttp) + explicit NetMessage(bool isHttp) : m_isHttp(isHttp), m_resultSet(false), m_disconnect(false), m_listening(false), m_listenSince(0) { pthread_mutex_init(&m_mutex, NULL); pthread_cond_init(&m_cond, NULL); @@ -88,19 +88,19 @@ class NetMessage { * Return the request string. * @return the request string. */ - string getRequest() const { return m_request; } + const string& getRequest() const { return m_request; } /** * Return the current user name. * @return the current user name. */ - string getUser() const { return m_user; } + const string& getUser() const { return m_user; } /** * Wait for the result being set and return the result string. - * @return the result string. + * @param result the variable in which to store the result string. */ - string getResult() { + void getResult(string* result) { pthread_mutex_lock(&m_mutex); while (!m_resultSet) { @@ -110,12 +110,10 @@ class NetMessage { } } m_request.clear(); - string result = m_result; + *result = m_result; m_result.clear(); m_resultSet = false; pthread_mutex_unlock(&m_mutex); - - return result; } /** @@ -126,8 +124,7 @@ class NetMessage { * @param listenUntil the end time to which to updates were added (exclusive). * @param disconnect true when the client shall be disconnected. */ - void setResult(const string result, const string user, const bool listening, const time_t listenUntil, - const bool disconnect) { + void setResult(const string& result, const string& user, bool listening, time_t listenUntil, bool disconnect) { pthread_mutex_lock(&m_mutex); m_result = result; m_user = user; @@ -144,7 +141,12 @@ class NetMessage { * @param listenSince set to the start time from which to add updates (inclusive). * @return whether the client is in listening mode. */ - bool isListening(time_t* listenSince=NULL) { if (listenSince) { *listenSince = m_listenSince; } return m_listening; } + bool isListening(time_t* listenSince = NULL) { + if (listenSince) { + *listenSince = m_listenSince; + } + return m_listening; + } /** * Return whether the client shall be disconnected.