1 /***************************************************************************
2                           qgsfilterresponsedecorator.cpp
3 
4   Define response wrapper for fcgi response
5   -------------------
6   begin                : 2017-01-03
7   copyright            : (C) 2017 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 
20 #include "qgsconfig.h"
21 #include "qgsfilterresponsedecorator.h"
22 #include "qgsserverexception.h"
23 
QgsFilterResponseDecorator(QgsServerFiltersMap filters,QgsServerResponse & response)24 QgsFilterResponseDecorator::QgsFilterResponseDecorator( QgsServerFiltersMap filters, QgsServerResponse &response )
25   : mFilters( filters )
26   , mResponse( response )
27 {
28 }
29 
start()30 void QgsFilterResponseDecorator::start()
31 {
32 #ifdef HAVE_SERVER_PYTHON_PLUGINS
33   QgsServerFiltersMap::const_iterator filtersIterator;
34   for ( filtersIterator = mFilters.constBegin(); filtersIterator != mFilters.constEnd(); ++filtersIterator )
35   {
36     filtersIterator.value()->requestReady();
37   }
38 #endif
39 }
40 
finish()41 void QgsFilterResponseDecorator::finish()
42 {
43 
44 #ifdef HAVE_SERVER_PYTHON_PLUGINS
45   QgsServerFiltersMap::const_iterator filtersIterator;
46   for ( filtersIterator = mFilters.constBegin(); filtersIterator != mFilters.constEnd(); ++filtersIterator )
47   {
48     filtersIterator.value()->responseComplete();
49   }
50 #endif
51   // Will call 'flush'
52   mResponse.finish();
53 }
54 
flush()55 void QgsFilterResponseDecorator::flush()
56 {
57 #ifdef HAVE_SERVER_PYTHON_PLUGINS
58   QgsServerFiltersMap::const_iterator filtersIterator;
59   for ( filtersIterator = mFilters.constBegin(); filtersIterator != mFilters.constEnd(); ++filtersIterator )
60   {
61     filtersIterator.value()->sendResponse();
62   }
63 #endif
64   mResponse.flush();
65 }
66 
67 
68