QGIS API Documentation 3.41.0-Master (3440c17df1d)
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
53 QgsServiceRegistry() = default;
55
64 QgsService *getService( const QString &name, const QString &version = QString() );
65
76 void registerService( QgsService *service SIP_TRANSFER );
77
84 bool registerApi( QgsServerApi *api SIP_TRANSFER );
85
97 int unregisterApi( const QString &name, const QString &version = QString() );
98
103 QgsServerApi *apiForRequest( const QgsServerRequest &request ) const SIP_SKIP;
104
115 QgsServerApi *getApi( const QString &name, const QString &version = QString() );
116
127 int unregisterService( const QString &name, const QString &version = QString() );
128
134 void init( const QString &nativeModulepath, QgsServerInterface *serverIface = nullptr );
135
139 void cleanUp();
140
141 private:
142
143 // XXX consider using QMap because of the few numbers of
144 // elements to handle
145 typedef QHash<QString, std::shared_ptr<QgsService> > ServiceTable;
146 typedef QHash<QString, std::shared_ptr<QgsServerApi> > ApiTable;
147 typedef QHash<QString, QPair<QString, QString> > VersionTable;
148
149 QgsServiceNativeLoader mNativeLoader;
150
151 ServiceTable mServices;
152 VersionTable mServiceVersions;
153 ApiTable mApis;
154 VersionTable mApiVersions;
155
156};
157
158#endif
159
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
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