Skip to content

Commit

Permalink
[Server][Cache] Add documents to store in cache: WMS Context, WFS Des…
Browse files Browse the repository at this point in the history
…cribeFeatureType, WCS DescribeCoverage
  • Loading branch information
rldhont committed Oct 6, 2018
1 parent 81db005 commit f79be97
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 6 deletions.
23 changes: 21 additions & 2 deletions src/server/services/wcs/qgswcsdescribecoverage.cpp
Expand Up @@ -36,10 +36,29 @@ namespace QgsWcs
void writeDescribeCoverage( QgsServerInterface *serverIface, const QgsProject *project, const QString &version,
const QgsServerRequest &request, QgsServerResponse &response )
{
QDomDocument doc = createDescribeCoverageDocument( serverIface, project, version, request );
QgsAccessControl *accessControl = serverIface->accessControls();

QDomDocument doc;
const QDomDocument *describeDocument = nullptr;

QgsServerCacheManager *cacheManager = serverIface->cacheManager();
if ( cacheManager && cacheManager->getCachedDocument( &doc, project, request, accessControl ) )
{
describeDocument = &doc;
}
else //describe feature xml not in cache. Create a new one
{
doc = createDescribeCoverageDocument( serverIface, project, version, request );

if ( cacheManager )
{
cacheManager->setCachedDocument( &doc, project, request, accessControl );
}
describeDocument = &doc;
}

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


Expand Down
23 changes: 21 additions & 2 deletions src/server/services/wfs/qgswfsdescribefeaturetype.cpp
Expand Up @@ -42,10 +42,29 @@ namespace QgsWfs
void writeDescribeFeatureType( QgsServerInterface *serverIface, const QgsProject *project, const QString &version,
const QgsServerRequest &request, QgsServerResponse &response )
{
QDomDocument doc = createDescribeFeatureTypeDocument( serverIface, project, version, request );
QgsAccessControl *accessControl = serverIface->accessControls();

QDomDocument doc;
const QDomDocument *describeDocument = nullptr;

QgsServerCacheManager *cacheManager = serverIface->cacheManager();
if ( cacheManager && cacheManager->getCachedDocument( &doc, project, request, accessControl ) )
{
describeDocument = &doc;
}
else //describe feature xml not in cache. Create a new one
{
doc = createDescribeFeatureTypeDocument( serverIface, project, version, request );

if ( cacheManager )
{
cacheManager->setCachedDocument( &doc, project, request, accessControl );
}
describeDocument = &doc;
}

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


Expand Down
23 changes: 21 additions & 2 deletions src/server/services/wms/qgswmsgetcontext.cpp
Expand Up @@ -55,10 +55,29 @@ namespace QgsWms
const QString &version, const QgsServerRequest &request,
QgsServerResponse &response )
{
QDomDocument doc = getContext( serverIface, project, version, request );
QgsAccessControl *accessControl = serverIface->accessControls();

QDomDocument doc;
const QDomDocument *contextDocument = nullptr;

QgsServerCacheManager *cacheManager = serverIface->cacheManager();
if ( cacheManager && cacheManager->getCachedDocument( &doc, project, request, accessControl ) )
{
contextDocument = &doc;
}
else //context xml not in cache. Create a new one
{
doc = getContext( serverIface, project, version, request );

if ( cacheManager )
{
cacheManager->setCachedDocument( &doc, project, request, accessControl );
}
contextDocument = &doc;
}

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


Expand Down

0 comments on commit f79be97

Please sign in to comment.