QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsserviceregistry.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsserviceregistry.h
3
4 Class defining the service manager for QGIS server services.
5 -------------------
6 begin : 2016-12-05
7 copyright : (C) 2016 by David Marteau
8 email : david dot marteau at 3liz dot com
9 ***************************************************************************/
10
11/***************************************************************************
12 * *
13 * This program is free software; you can redistribute it and/or modify *
14 * it under the terms of the GNU General Public License as published by *
15 * the Free Software Foundation; either version 2 of the License, or *
16 * (at your option) any later version. *
17 * *
18 ***************************************************************************/
19#ifndef QGSSERVICEREGISTRY_H
20#define QGSSERVICEREGISTRY_H
21
22#include "qgsconfig.h"
23#include "qgis.h"
24
25#include <QHash>
26#include <QString>
27
29#include <memory>
30
31class QgsService;
33class QgsServerApi;
35
48class SERVER_EXPORT QgsServiceRegistry
49{
50
51 public:
52
54 QgsServiceRegistry() = default;
55
58
67 QgsService *getService( const QString &name, const QString &version = QString() );
68
79 void registerService( QgsService *service SIP_TRANSFER );
80
87 bool registerApi( QgsServerApi *api SIP_TRANSFER );
88
100 int unregisterApi( const QString &name, const QString &version = QString() );
101
106 QgsServerApi *apiForRequest( const QgsServerRequest &request ) const SIP_SKIP;
107
118 QgsServerApi *getApi( const QString &name, const QString &version = QString() );
119
130 int unregisterService( const QString &name, const QString &version = QString() );
131
137 void init( const QString &nativeModulepath, QgsServerInterface *serverIface = nullptr );
138
142 void cleanUp();
143
144 private:
145
146 // XXX consider using QMap because of the few numbers of
147 // elements to handle
148 typedef QHash<QString, std::shared_ptr<QgsService> > ServiceTable;
149 typedef QHash<QString, std::shared_ptr<QgsServerApi> > ApiTable;
150 typedef QHash<QString, QPair<QString, QString> > VersionTable;
151
152 QgsServiceNativeLoader mNativeLoader;
153
154 ServiceTable mServices;
155 VersionTable mServiceVersions;
156 ApiTable mApis;
157 VersionTable mApiVersions;
158
159};
160
161#endif
162
Server generic API endpoint abstract base class.
Definition: qgsserverapi.h:81
QgsServerInterface Class defining interfaces exposed by QGIS Server and made available to plugins.
QgsServerRequest Class defining request interface passed to services QgsService::executeRequest() met...
Class defining the native service module loader for QGIS server services.
QgsServiceRegistry Class defining the registry manager for QGIS server services.
QgsServiceRegistry()=default
Constructor.
QgsService Class defining interfaces for QGIS server services.
Definition: qgsservice.h:39
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_TRANSFER
Definition: qgis_sip.h:36