mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-07-16 20:15:46 +00:00
e94faf7827
XMPP JID has a concept of 'resources', which can be used to differentiate multiple clients of the same account. We currently hardcode this 'resource' to '0ad' in two places: - The 0 A.D. client always uses '0ad' - The network code expects a host resource to be '0ad' when connecting. As noted in 0fd8aa2a77#31215, it is less effort to store the JI D directly. This patch does that. It also makes 0 A.D. use a different resource each time. Note that resources ought not contain particular information, as the XMPP server is free to clobber it. I keep '0ad-' here for debug purposes. This allows: - multiple 0 A.D. instances to log on the lobby at the same time (not massively useful, but good for debugging sometimes) - hosting a game with a custom resource, which will potentially make it easier to have dedi cated servers on one account. Note that hosting multiple games on one account is currently not supported and will have weird behaviour on the lobbybots side. They should be upgraded independently of this. Refs #3556 Differential Revision: https://code.wildfiregames.com/D3500 This was SVN commit r25407.
73 lines
3.2 KiB
C++
73 lines
3.2 KiB
C++
/* Copyright (C) 2021 Wildfire Games.
|
|
* This file is part of 0 A.D.
|
|
*
|
|
* 0 A.D. is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* 0 A.D. is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef IXMPPCLIENT_H
|
|
#define IXMPPCLIENT_H
|
|
|
|
#include "scriptinterface/ScriptTypes.h"
|
|
|
|
class ScriptInterface;
|
|
namespace StunClient {
|
|
struct StunEndpoint;
|
|
}
|
|
|
|
class IXmppClient
|
|
{
|
|
public:
|
|
static IXmppClient* create(const ScriptInterface* scriptInterface, const std::string& sUsername, const std::string& sPassword, const std::string& sRoom, const std::string& sNick, const int historyRequestSize = 0, bool regOpt = false);
|
|
virtual ~IXmppClient() {}
|
|
|
|
virtual void connect() = 0;
|
|
virtual void disconnect() = 0;
|
|
virtual bool isConnected() = 0;
|
|
virtual void recv() = 0;
|
|
virtual void SendIqGetBoardList() = 0;
|
|
virtual void SendIqGetProfile(const std::string& player) = 0;
|
|
virtual void SendIqGameReport(const ScriptInterface& scriptInterface, JS::HandleValue data) = 0;
|
|
virtual void SendIqRegisterGame(const ScriptInterface& scriptInterface, JS::HandleValue data) = 0;
|
|
virtual void SendIqGetConnectionData(const std::string& jid, const std::string& password) = 0;
|
|
virtual void SendIqUnregisterGame() = 0;
|
|
virtual void SendIqChangeStateGame(const std::string& nbp, const std::string& players) = 0;
|
|
virtual void SendIqLobbyAuth(const std::string& to, const std::string& token) = 0;
|
|
virtual void SetNick(const std::string& nick) = 0;
|
|
virtual std::string GetNick() const = 0;
|
|
virtual std::string GetJID() const = 0;
|
|
virtual void kick(const std::string& nick, const std::string& reason) = 0;
|
|
virtual void ban(const std::string& nick, const std::string& reason) = 0;
|
|
virtual void SetPresence(const std::string& presence) = 0;
|
|
virtual const char* GetPresence(const std::string& nickname) = 0;
|
|
virtual const char* GetRole(const std::string& nickname) = 0;
|
|
virtual std::wstring GetRating(const std::string& nickname) = 0;
|
|
virtual const std::wstring& GetSubject() = 0;
|
|
virtual JS::Value GUIGetPlayerList(const ScriptInterface& scriptInterface) = 0;
|
|
virtual JS::Value GUIGetGameList(const ScriptInterface& scriptInterface) = 0;
|
|
virtual JS::Value GUIGetBoardList(const ScriptInterface& scriptInterface) = 0;
|
|
virtual JS::Value GUIGetProfile(const ScriptInterface& scriptInterface) = 0;
|
|
|
|
virtual JS::Value GuiPollNewMessages(const ScriptInterface& scriptInterface) = 0;
|
|
virtual JS::Value GuiPollHistoricMessages(const ScriptInterface& scriptInterface) = 0;
|
|
virtual bool GuiPollHasPlayerListUpdate() = 0;
|
|
|
|
virtual void SendMUCMessage(const std::string& message) = 0;
|
|
virtual void SendStunEndpointToHost(const StunClient::StunEndpoint& stunEndpoint, const std::string& hostJID) = 0;
|
|
};
|
|
|
|
extern IXmppClient *g_XmppClient;
|
|
extern bool g_rankedGame;
|
|
|
|
#endif // XMPPCLIENT_H
|