serverid.h
1 //------------------------------------------------------------------------------
2 // serverid.h
3 //------------------------------------------------------------------------------
4 //
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 // 02110-1301 USA
19 //
20 //------------------------------------------------------------------------------
21 // Copyright (C) 2024 "Zalewa" <zalewapl@gmail.com>
22 //------------------------------------------------------------------------------
23 #ifndef DOOMSEEKER_CORE_SERVERAPI_SERVERID_H
24 #define DOOMSEEKER_CORE_SERVERAPI_SERVERID_H
25 
26 #include <QHostAddress>
27 #include "plugins/engineplugin.h"
28 #include "serverapi/server.h"
29 
30 class EnginePlugin;
31 
50 {
51 public:
52  static ServerRuntimeId fromServer(const ServerPtr server) { return fromServer(server.data()); }
53  static ServerRuntimeId fromServer(const Server *server)
54  {
55  return ServerRuntimeId(
56  server->plugin(),
57  server->address(),
58  server->port());
59  }
60 
61  ServerRuntimeId(const EnginePlugin *plugin, const QHostAddress &address, unsigned short port)
62  : m_plugin(plugin), m_address(address), m_port(port) {}
63 
64  bool operator==(const ServerRuntimeId &other) const
65  {
66  return m_plugin == other.m_plugin
67  && m_address == other.m_address
68  && m_port == other.m_port;
69  }
70 
71  bool operator!=(const ServerRuntimeId &other) const
72  {
73  return !(*this == other);
74  }
75 
76  const QHostAddress &address() const { return m_address; }
77  const EnginePlugin *plugin() const { return m_plugin; }
78  unsigned short port() const { return m_port; }
79 
80 private:
81  const EnginePlugin *m_plugin;
82  QHostAddress m_address;
83  unsigned short m_port;
84 };
85 
86 #endif