Replace observeExistence with std::weak_ptr of Request

This commit is contained in:
Benau 2019-11-30 16:25:21 +08:00
parent 13975cc5db
commit 89d35f09fa
7 changed files with 21 additions and 17 deletions

View File

@ -117,7 +117,7 @@ ClientLobby::~ClientLobby()
NetworkConfig::get()->setServerDetails(request,
"clear-user-joined-server");
request->queue();
ConnectToServer::m_previous_unjoin = request->observeExistence();
ConnectToServer::m_previous_unjoin = request;
}
} // ClientLobby

View File

@ -47,7 +47,7 @@
#include <algorithm>
// ============================================================================
std::weak_ptr<bool> ConnectToServer::m_previous_unjoin;
std::weak_ptr<Online::Request> ConnectToServer::m_previous_unjoin;
TransportAddress ConnectToServer::m_server_address;
int ConnectToServer::m_retry_count = 0;
bool ConnectToServer::m_done_intecept = false;
@ -78,7 +78,7 @@ ConnectToServer::~ConnectToServer()
NetworkConfig::get()->setServerDetails(request,
"clear-user-joined-server");
request->queue();
m_previous_unjoin = request->observeExistence();
m_previous_unjoin = request;
}
} // ~ConnectToServer

View File

@ -28,6 +28,11 @@
#include "irrString.h"
namespace Online
{
class Request;
}
class Server;
class ConnectToServer : public Protocol
@ -56,7 +61,7 @@ private:
static int m_retry_count;
static bool m_done_intecept;
public:
static std::weak_ptr<bool> m_previous_unjoin;
static std::weak_ptr<Online::Request> m_previous_unjoin;
ConnectToServer(std::shared_ptr<Server> server);
virtual ~ConnectToServer();
virtual void setup() OVERRIDE;

View File

@ -2106,7 +2106,7 @@ bool ServerLobby::registerServer(bool now)
else
{
request->queue();
m_server_recovering = request->observeExistence();
m_server_recovering = request;
}
return true;
} // registerServer
@ -2119,7 +2119,7 @@ bool ServerLobby::registerServer(bool now)
void ServerLobby::unregisterServer(bool now)
{
auto request = std::make_shared<Online::XMLRequest>();
m_server_unregistered = request->observeExistence();
m_server_unregistered = request;
NetworkConfig::get()->setServerDetails(request, "stop");
request->addParameter("address", m_server_address.getIP());

View File

@ -43,6 +43,11 @@ class NetworkString;
class NetworkPlayerProfile;
class STKPeer;
namespace Online
{
class Request;
}
class ServerLobby : public LobbyProtocol
{
public:
@ -143,9 +148,9 @@ private:
std::owner_less<std::weak_ptr<STKPeer> > > m_peers_ready;
/** It indicates if this server is unregistered with the stk server. */
std::weak_ptr<bool> m_server_unregistered;
std::weak_ptr<Online::Request> m_server_unregistered;
std::weak_ptr<bool> m_server_recovering;
std::weak_ptr<Online::Request> m_server_recovering;
/** Timeout counter for various state. */
std::atomic<int64_t> m_timeout;

View File

@ -45,7 +45,6 @@ namespace Online
m_info = "";
m_success = false;
m_xml_data = NULL;
m_exists = std::make_shared<bool>(true);
} // XMLRequest
// ------------------------------------------------------------------------

View File

@ -28,7 +28,6 @@
#endif
#include <curl/curl.h>
#include <assert.h>
#include <memory>
#include <string>
class XMLNode;
@ -43,12 +42,11 @@ namespace Online
/** On a successful download contains the converted XML tree. */
XMLNode *m_xml_data;
std::shared_ptr<bool> m_exists;
protected:
/** Additional info contained the downloaded data (or an error
* message if a problem occurred). */
irr::core::stringw m_info;
/** Additional info contained the downloaded data (or an error
* message if a problem occurred). */
irr::core::stringw m_info;
/** True if the request was successful executed on the server. */
bool m_success;
@ -91,9 +89,6 @@ namespace Online
assert(hasBeenExecuted());
return m_success;
} // isSuccess
// --------------------------------------------------------------------
std::weak_ptr<bool> observeExistence() const { return m_exists; }
}; // class XMLRequest
} //namespace Online
#endif // HEADER_XML_REQUEST_HPP