swift
clientprovider.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2018 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_NETWORK_CLIENTPROVIDER_H
7 #define SWIFT_MISC_NETWORK_CLIENTPROVIDER_H
8 
9 #include <QMap>
10 #include <QReadWriteLock>
11 
14 #include "misc/provider.h"
15 
16 namespace swift::misc
17 {
18  namespace aviation
19  {
20  class CAircraftSituation;
21  }
22  namespace network
23  {
26  {
27  public:
30  virtual CClientList getClients() const = 0;
31 
34  virtual void setClients(const CClientList &clients) = 0;
35 
38  virtual void clearClients() = 0;
39 
42  virtual CClientList getClientsForCallsigns(const aviation::CCallsignSet &callsigns) const = 0;
43 
46  virtual CClient getClientOrDefaultForCallsign(const aviation::CCallsign &callsign) const = 0;
47 
50  virtual bool hasClientInfo(const aviation::CCallsign &callsign) const = 0;
51 
54  virtual bool addNewClient(const CClient &client) = 0;
55 
58  virtual bool setOtherClient(const swift::misc::network::CClient &client) = 0;
59 
62  virtual int updateOrAddClient(const aviation::CCallsign &callsign, const CPropertyIndexVariantMap &vm,
63  bool skipEqualValues = true) = 0;
64 
67  virtual int removeClient(const aviation::CCallsign &callsign) = 0;
68 
71  virtual bool autoAdjustCientGndCapability(const aviation::CAircraftSituation &situation) = 0;
72 
75  virtual bool addClientGndCapability(const aviation::CCallsign &callsign) = 0;
76 
79  virtual bool setClientGndCapability(const aviation::CCallsign &callsign, bool supportGndFlag) = 0;
80 
83  virtual void markAsSwiftClient(const aviation::CCallsign &callsign) = 0;
84  };
85 
88  {
89  public:
91  virtual CClientList getClients() const override;
92  virtual void setClients(const CClientList &clients) override;
93  virtual void clearClients() override;
94  virtual CClientList getClientsForCallsigns(const aviation::CCallsignSet &callsigns) const override;
95  virtual CClient getClientOrDefaultForCallsign(const aviation::CCallsign &callsign) const override;
96  virtual bool hasClientInfo(const aviation::CCallsign &callsign) const override;
97  virtual bool addNewClient(const CClient &client) override;
98  virtual bool setOtherClient(const swift::misc::network::CClient &client) override;
99  virtual int updateOrAddClient(const aviation::CCallsign &callsign, const CPropertyIndexVariantMap &vm,
100  bool skipEqualValues = true) override;
101  virtual int removeClient(const aviation::CCallsign &callsign) override;
102  virtual bool autoAdjustCientGndCapability(const aviation::CAircraftSituation &situation) override;
103  virtual bool addClientGndCapability(const aviation::CCallsign &callsign) override;
104  virtual bool setClientGndCapability(const aviation::CCallsign &callsign, bool supportGndFlag) override;
105  virtual void markAsSwiftClient(const aviation::CCallsign &callsign) override;
106 
107  private:
108  CClientPerCallsign m_clients;
109  mutable QReadWriteLock m_lockClient;
110  };
111 
113  class SWIFT_MISC_EXPORT CClientAware : public IProviderAware<IClientProvider>
114  {
115  virtual void anchor();
116 
117  public:
119  CClientList getClients() const;
120 
122  void setClients(const CClientList &clients);
123 
125  void clearClients();
126 
129 
131  swift::misc::network::CClient getClientOrDefaultForCallsign(const aviation::CCallsign &callsign) const;
132 
134  bool hasClientInfo(const aviation::CCallsign &callsign) const;
135 
137  bool addNewClient(const CClient &client);
138 
140  int updateOrAddClient(const aviation::CCallsign &callsign, const CPropertyIndexVariantMap &vm,
141  bool skipEqualValues);
142 
144  int removeClient(const aviation::CCallsign &callsign);
145 
147  bool autoAdjustCientGndCapability(const aviation::CAircraftSituation &situation);
148 
150  bool addClientGndCapability(const aviation::CCallsign &callsign);
151 
153  void markAsSwiftClient(const aviation::CCallsign &callsign);
154 
156  void setClientProvider(CClientProvider *provider) { this->setProvider(provider); }
157 
158  protected:
161 
163  CClientAware(IClientProvider *clientProvider) : IProviderAware(clientProvider) {}
164  };
165 
168  {
169  public:
171  static CClientProviderDummy *instance();
172  };
173  } // namespace network
174 } // namespace swift::misc
175 
176 Q_DECLARE_INTERFACE(swift::misc::network::IClientProvider, "org.swift-project.misc::network::iclientprovider")
177 
178 #endif // SWIFT_MISC_NETWORK_CLIENTPROVIDER_H
Specialized value object compliant map for variants, based on indexes.
Base class of provider aware classes.
Definition: provider.h:41
Base class for providers.
Definition: provider.h:19
Value object encapsulating information of an aircraft's situation.
Value object encapsulating information of a callsign.
Definition: callsign.h:30
Value object for a set of callsigns.
Definition: callsignset.h:26
Class which can be directly used to access an.
swift::misc::network::CClientList getClientsForCallsigns(const aviation::CCallsignSet &callsigns) const
Returns a list of other clients corresponding to the given callsigns.
CClientAware(IClientProvider *clientProvider)
Constructor.
CClientAware()
Default constructor.
void clearClients()
Set other clients.
void setClients(const CClientList &clients)
Set other clients.
void setClientProvider(CClientProvider *provider)
Provider.
Another client software.
Definition: client.h:27
Value object encapsulating a list of voice rooms.
Definition: clientlist.h:27
Client provider dummy for testing.
Direct in memory access to client (network client) data.
Direct in memory access to client (network client) data.
virtual CClientList getClients() const =0
Get other clients.
virtual bool setClientGndCapability(const aviation::CCallsign &callsign, bool supportGndFlag)=0
Set gnd.flag capability.
virtual bool autoAdjustCientGndCapability(const aviation::CAircraftSituation &situation)=0
Adjust gnd.flag capability from situation.
virtual bool hasClientInfo(const aviation::CCallsign &callsign) const =0
Client info for given callsign?
virtual CClient getClientOrDefaultForCallsign(const aviation::CCallsign &callsign) const =0
Other client for the given callsigns.
virtual void clearClients()=0
Set other clients.
virtual void setClients(const CClientList &clients)=0
Set other clients.
virtual bool setOtherClient(const swift::misc::network::CClient &client)=0
Set client for its callsign.
virtual int updateOrAddClient(const aviation::CCallsign &callsign, const CPropertyIndexVariantMap &vm, bool skipEqualValues=true)=0
Update or add a client.
virtual int removeClient(const aviation::CCallsign &callsign)=0
Remove client.
virtual CClientList getClientsForCallsigns(const aviation::CCallsignSet &callsigns) const =0
Returns a list of other clients corresponding to the given callsigns.
virtual void markAsSwiftClient(const aviation::CCallsign &callsign)=0
Mark as other swift client.
virtual bool addNewClient(const CClient &client)=0
Add a new client, if existing nothing will be added.
virtual bool addClientGndCapability(const aviation::CCallsign &callsign)=0
Add gnd.flag capability.
Free functions in swift::misc.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.