QGIS API Documentation 3.39.0-Master (47f7b3a4989)
Loading...
Searching...
No Matches
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.
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