|
|
|
//
|
|
|
|
// Created by koncord on 24.04.17.
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef OPENMW_QUERYCLIENT_HPP
|
|
|
|
#define OPENMW_QUERYCLIENT_HPP
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
#include <RakPeerInterface.h>
|
|
|
|
#include <components/openmw-mp/Master/PacketMasterQuery.hpp>
|
|
|
|
#include <components/openmw-mp/Master/PacketMasterUpdate.hpp>
|
|
|
|
#include <apps/browser/ServerModel.hpp>
|
|
|
|
#include <mutex>
|
|
|
|
|
|
|
|
class QueryClient
|
|
|
|
{
|
[Browser] Rework browser for improved stability & clarity
(cherry picked from commits 5c79e7106f840ef217b9bf45ec5d3bd925825863, 57353cdffff3580566415039544fae15052e8d73, 15723adb9a0383d8ebb8b7e26849b2de70b9952d, 01a5196a92f27f0c09bd053daf4d779d0c113974, ed75563a94174ca38cb67beba9c0e35a810dfbd2, 3839a2dcfd8fbbc7598771ee604f9ff9eb08e044, 1fd16ba69c4893cfe7379ea6bb0f65e5ac59cd4b, 66283943c593a406592daf0b90491d42a2e80050, ba8613a179936631d6c5fa7ae6dedb8a5f3eb684, 5b8f4f3e92d662f36580b94184057b648be9f01d, 35b771b19e00a813350553f686c0971334bbc3b5, 043eb224e29ca7b41a738eb598e16131ccfedd1a, 05fac2f67d5281d72b48bdba0db14e6bd7974765)
7 years ago
|
|
|
public:
|
|
|
|
QueryClient(QueryClient const &) = delete;
|
|
|
|
QueryClient(QueryClient &&) = delete;
|
|
|
|
QueryClient &operator=(QueryClient const &) = delete;
|
|
|
|
QueryClient &operator=(QueryClient &&) = delete;
|
[Browser] Rework browser for improved stability & clarity
(cherry picked from commits 5c79e7106f840ef217b9bf45ec5d3bd925825863, 57353cdffff3580566415039544fae15052e8d73, 15723adb9a0383d8ebb8b7e26849b2de70b9952d, 01a5196a92f27f0c09bd053daf4d779d0c113974, ed75563a94174ca38cb67beba9c0e35a810dfbd2, 3839a2dcfd8fbbc7598771ee604f9ff9eb08e044, 1fd16ba69c4893cfe7379ea6bb0f65e5ac59cd4b, 66283943c593a406592daf0b90491d42a2e80050, ba8613a179936631d6c5fa7ae6dedb8a5f3eb684, 5b8f4f3e92d662f36580b94184057b648be9f01d, 35b771b19e00a813350553f686c0971334bbc3b5, 043eb224e29ca7b41a738eb598e16131ccfedd1a, 05fac2f67d5281d72b48bdba0db14e6bd7974765)
7 years ago
|
|
|
|
|
|
|
static QueryClient &Get();
|
[Browser] Rework browser for improved stability & clarity
(cherry picked from commits 5c79e7106f840ef217b9bf45ec5d3bd925825863, 57353cdffff3580566415039544fae15052e8d73, 15723adb9a0383d8ebb8b7e26849b2de70b9952d, 01a5196a92f27f0c09bd053daf4d779d0c113974, ed75563a94174ca38cb67beba9c0e35a810dfbd2, 3839a2dcfd8fbbc7598771ee604f9ff9eb08e044, 1fd16ba69c4893cfe7379ea6bb0f65e5ac59cd4b, 66283943c593a406592daf0b90491d42a2e80050, ba8613a179936631d6c5fa7ae6dedb8a5f3eb684, 5b8f4f3e92d662f36580b94184057b648be9f01d, 35b771b19e00a813350553f686c0971334bbc3b5, 043eb224e29ca7b41a738eb598e16131ccfedd1a, 05fac2f67d5281d72b48bdba0db14e6bd7974765)
7 years ago
|
|
|
void SetServer(const std::string &addr, unsigned short port);
|
|
|
|
std::map<RakNet::SystemAddress, QueryData> Query();
|
[Browser] Rework browser for improved stability & clarity
(cherry picked from commits 5c79e7106f840ef217b9bf45ec5d3bd925825863, 57353cdffff3580566415039544fae15052e8d73, 15723adb9a0383d8ebb8b7e26849b2de70b9952d, 01a5196a92f27f0c09bd053daf4d779d0c113974, ed75563a94174ca38cb67beba9c0e35a810dfbd2, 3839a2dcfd8fbbc7598771ee604f9ff9eb08e044, 1fd16ba69c4893cfe7379ea6bb0f65e5ac59cd4b, 66283943c593a406592daf0b90491d42a2e80050, ba8613a179936631d6c5fa7ae6dedb8a5f3eb684, 5b8f4f3e92d662f36580b94184057b648be9f01d, 35b771b19e00a813350553f686c0971334bbc3b5, 043eb224e29ca7b41a738eb598e16131ccfedd1a, 05fac2f67d5281d72b48bdba0db14e6bd7974765)
7 years ago
|
|
|
std::pair<RakNet::SystemAddress, QueryData> Update(const RakNet::SystemAddress &addr);
|
|
|
|
int Status();
|
|
|
|
private:
|
|
|
|
RakNet::ConnectionState Connect();
|
|
|
|
MASTER_PACKETS GetAnswer(MASTER_PACKETS packet);
|
|
|
|
protected:
|
|
|
|
QueryClient();
|
|
|
|
~QueryClient();
|
|
|
|
private:
|
|
|
|
int status;
|
|
|
|
RakNet::RakPeerInterface *peer;
|
|
|
|
RakNet::SystemAddress masterAddr;
|
|
|
|
mwmp::PacketMasterQuery *pmq;
|
|
|
|
mwmp::PacketMasterUpdate *pmu;
|
|
|
|
std::pair<RakNet::SystemAddress, ServerData> server;
|
|
|
|
std::mutex mxServers;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif //OPENMW_QUERYCLIENT_HPP
|