Skip to content

Commit a09d043

Browse files
committedMay 11, 2011
Wire in capabilities cache class
1 parent bf07028 commit a09d043

File tree

1 file changed

+28
-10
lines changed

1 file changed

+28
-10
lines changed
 

‎src/mapserver/qgis_map_serv.cpp

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ map service syntax for SOAP/HTTP POST
1818
***************************************************************************/
1919

2020
#include "qgsapplication.h"
21+
#include "qgscapabilitiescache.h"
2122
#include "qgsconfigcache.h"
2223
#include "qgsgetrequesthandler.h"
2324
#include "qgssoaprequesthandler.h"
@@ -191,6 +192,9 @@ int main( int argc, char * argv[] )
191192
}
192193
}
193194

195+
//create cache for capabilities XML
196+
QgsCapabilitiesCache capabilitiesCache;
197+
194198
//creating QgsMapRenderer is expensive (access to srs.db), so we do it here before the fcgi loop
195199
QgsMapRenderer* theMapRenderer = new QgsMapRenderer();
196200

@@ -291,20 +295,34 @@ int main( int argc, char * argv[] )
291295

292296
if ( requestIt->second == "GetCapabilities" )
293297
{
294-
QDomDocument capabilitiesDocument;
295-
try
298+
const QDomDocument* capabilitiesDocument = capabilitiesCache.searchCapabilitiesDocument( configFilePath );
299+
if( !capabilitiesDocument ) //capabilities xml not in cache. Create a new one
300+
{
301+
QgsMSDebugMsg( "Capabilities document not found in cache" );
302+
QDomDocument doc;
303+
try
304+
{
305+
doc = theServer->getCapabilities();
306+
}
307+
catch ( QgsMapServiceException& ex )
308+
{
309+
theRequestHandler->sendServiceException( ex );
310+
delete theRequestHandler;
311+
delete theServer;
312+
continue;
313+
}
314+
capabilitiesCache.insertCapabilitiesDocument( configFilePath, &doc );
315+
capabilitiesDocument = capabilitiesCache.searchCapabilitiesDocument( configFilePath );
316+
}
317+
else
296318
{
297-
capabilitiesDocument = theServer->getCapabilities();
319+
QgsMSDebugMsg( "Found capabilities document in cache" );
298320
}
299-
catch ( QgsMapServiceException& ex )
321+
322+
if( capabilitiesDocument )
300323
{
301-
theRequestHandler->sendServiceException( ex );
302-
delete theRequestHandler;
303-
delete theServer;
304-
continue;
324+
theRequestHandler->sendGetCapabilitiesResponse( *capabilitiesDocument );
305325
}
306-
QgsMSDebugMsg( "sending GetCapabilities response" );
307-
theRequestHandler->sendGetCapabilitiesResponse( capabilitiesDocument );
308326
delete theRequestHandler;
309327
delete theServer;
310328
continue;

0 commit comments

Comments
 (0)
Please sign in to comment.