QGIS API Documentation 3.43.0-Master (c67cf405802)
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
47class SERVER_EXPORT QgsServiceRegistry
48{
49 public:
50 QgsServiceRegistry() = default;
52
61 QgsService *getService( const QString &name, const QString &version = QString() );
62
73 void registerService( QgsService *service SIP_TRANSFER );
74
81 bool registerApi( QgsServerApi *api SIP_TRANSFER );
82
94 int unregisterApi( const QString &name, const QString &version = QString() );
95
100 QgsServerApi *apiForRequest( const QgsServerRequest &request ) const SIP_SKIP;
101
112 QgsServerApi *getApi( const QString &name, const QString &version = QString() );
113
124 int unregisterService( const QString &name, const QString &version = QString() );
125
131 void init( const QString &nativeModulepath, QgsServerInterface *serverIface = nullptr );
132
136 void cleanUp();
137
138 private:
139 // XXX consider using QMap because of the few numbers of
140 // elements to handle
141 typedef QHash<QString, std::shared_ptr<QgsService>> ServiceTable;
142 typedef QHash<QString, std::shared_ptr<QgsServerApi>> ApiTable;
143 typedef QHash<QString, QPair<QString, QString>> VersionTable;
144
145 QgsServiceNativeLoader mNativeLoader;
146
147 ServiceTable mServices;
148 VersionTable mServiceVersions;
149 ApiTable mApis;
150 VersionTable mApiVersions;
151};
152
153#endif
Server generic API endpoint abstract base class.
Defines interfaces exposed by QGIS Server and made available to plugins.
Defines requests passed to QgsService classes.
Defines the native service module loader for QGIS server services.
A registry manager for QGIS server services.
QgsServiceRegistry()=default
Defines interfaces for QGIS server services.
Definition qgsservice.h:38
#define SIP_SKIP
Definition qgis_sip.h:126
#define SIP_TRANSFER
Definition qgis_sip.h:36