Skip to content

Commit f79be97

Browse files
committed
[Server][Cache] Add documents to store in cache: WMS Context, WFS DescribeFeatureType, WCS DescribeCoverage
1 parent 81db005 commit f79be97

File tree

3 files changed

+63
-6
lines changed

3 files changed

+63
-6
lines changed

src/server/services/wcs/qgswcsdescribecoverage.cpp

+21-2
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,29 @@ namespace QgsWcs
3636
void writeDescribeCoverage( QgsServerInterface *serverIface, const QgsProject *project, const QString &version,
3737
const QgsServerRequest &request, QgsServerResponse &response )
3838
{
39-
QDomDocument doc = createDescribeCoverageDocument( serverIface, project, version, request );
39+
QgsAccessControl *accessControl = serverIface->accessControls();
40+
41+
QDomDocument doc;
42+
const QDomDocument *describeDocument = nullptr;
43+
44+
QgsServerCacheManager *cacheManager = serverIface->cacheManager();
45+
if ( cacheManager && cacheManager->getCachedDocument( &doc, project, request, accessControl ) )
46+
{
47+
describeDocument = &doc;
48+
}
49+
else //describe feature xml not in cache. Create a new one
50+
{
51+
doc = createDescribeCoverageDocument( serverIface, project, version, request );
52+
53+
if ( cacheManager )
54+
{
55+
cacheManager->setCachedDocument( &doc, project, request, accessControl );
56+
}
57+
describeDocument = &doc;
58+
}
4059

4160
response.setHeader( "Content-Type", "text/xml; charset=utf-8" );
42-
response.write( doc.toByteArray() );
61+
response.write( describeDocument->toByteArray() );
4362
}
4463

4564

src/server/services/wfs/qgswfsdescribefeaturetype.cpp

+21-2
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,29 @@ namespace QgsWfs
4242
void writeDescribeFeatureType( QgsServerInterface *serverIface, const QgsProject *project, const QString &version,
4343
const QgsServerRequest &request, QgsServerResponse &response )
4444
{
45-
QDomDocument doc = createDescribeFeatureTypeDocument( serverIface, project, version, request );
45+
QgsAccessControl *accessControl = serverIface->accessControls();
46+
47+
QDomDocument doc;
48+
const QDomDocument *describeDocument = nullptr;
49+
50+
QgsServerCacheManager *cacheManager = serverIface->cacheManager();
51+
if ( cacheManager && cacheManager->getCachedDocument( &doc, project, request, accessControl ) )
52+
{
53+
describeDocument = &doc;
54+
}
55+
else //describe feature xml not in cache. Create a new one
56+
{
57+
doc = createDescribeFeatureTypeDocument( serverIface, project, version, request );
58+
59+
if ( cacheManager )
60+
{
61+
cacheManager->setCachedDocument( &doc, project, request, accessControl );
62+
}
63+
describeDocument = &doc;
64+
}
4665

4766
response.setHeader( "Content-Type", "text/xml; charset=utf-8" );
48-
response.write( doc.toByteArray() );
67+
response.write( describeDocument->toByteArray() );
4968
}
5069

5170

src/server/services/wms/qgswmsgetcontext.cpp

+21-2
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,29 @@ namespace QgsWms
5555
const QString &version, const QgsServerRequest &request,
5656
QgsServerResponse &response )
5757
{
58-
QDomDocument doc = getContext( serverIface, project, version, request );
58+
QgsAccessControl *accessControl = serverIface->accessControls();
59+
60+
QDomDocument doc;
61+
const QDomDocument *contextDocument = nullptr;
62+
63+
QgsServerCacheManager *cacheManager = serverIface->cacheManager();
64+
if ( cacheManager && cacheManager->getCachedDocument( &doc, project, request, accessControl ) )
65+
{
66+
contextDocument = &doc;
67+
}
68+
else //context xml not in cache. Create a new one
69+
{
70+
doc = getContext( serverIface, project, version, request );
71+
72+
if ( cacheManager )
73+
{
74+
cacheManager->setCachedDocument( &doc, project, request, accessControl );
75+
}
76+
contextDocument = &doc;
77+
}
5978

6079
response.setHeader( QStringLiteral( "Content-Type" ), QStringLiteral( "text/xml; charset=utf-8" ) );
61-
response.write( doc.toByteArray() );
80+
response.write( contextDocument->toByteArray() );
6281
}
6382

6483

0 commit comments

Comments
 (0)