bes  Updated for version 3.19.1
BESDefaultModule.cc
1 // BESDefaultModule.cc
2 
3 // This file is part of bes, A C++ back-end server implementation framework
4 // for the OPeNDAP Data Access Protocol.
5 
6 // Copyright (c) 2004-2009 University Corporation for Atmospheric Research
7 // Author: Patrick West <pwest@ucar.edu> and Jose Garcia <jgarcia@ucar.edu>
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the GNU Lesser General Public
11 // License as published by the Free Software Foundation; either
12 // version 2.1 of the License, or (at your option) any later version.
13 //
14 // This library is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 // Lesser General Public License for more details.
18 //
19 // You should have received a copy of the GNU Lesser General Public
20 // License along with this library; if not, write to the Free Software
21 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 //
23 // You can contact University Corporation for Atmospheric Research at
24 // 3080 Center Green Drive, Boulder, CO 80301
25 
26 // (c) COPYRIGHT University Corporation for Atmospheric Research 2004-2005
27 // Please read the full copyright statement in the file COPYRIGHT_UCAR.
28 //
29 // Authors:
30 // pwest Patrick West <pwest@ucar.edu>
31 // jgarcia Jose Garcia <jgarcia@ucar.edu>
32 
33 #include <iostream>
34 
35 using std::endl ;
36 
37 #include "BESDefaultModule.h"
38 
39 #include "BESResponseNames.h"
40 #include "BESResponseHandlerList.h"
41 
42 #include "BESHelpResponseHandler.h"
43 #include "BESVersionResponseHandler.h"
44 
45 #ifdef BES_DEVELOPER
46 #include "BESProcIdResponseHandler.h"
47 #include "BESConfigResponseHandler.h"
48 #endif
49 
50 #include "BESStatusResponseHandler.h"
51 #include "BESServicesResponseHandler.h"
52 #include "BESStreamResponseHandler.h"
53 
54 #include "BESSetContainerResponseHandler.h"
55 #include "BESShowContainersResponseHandler.h"
56 #include "BESDelContainerResponseHandler.h"
57 #include "BESDelContainersResponseHandler.h"
58 #include "BESContainerStorageList.h"
59 #include "BESContainerStorageVolatile.h"
60 
61 #include "BESDefineResponseHandler.h"
62 #include "BESShowDefsResponseHandler.h"
63 #include "BESDelDefResponseHandler.h"
64 #include "BESDelDefsResponseHandler.h"
65 #include "BESDefinitionStorageList.h"
66 #include "BESDefinitionStorageVolatile.h"
67 
68 #include "BESSetContextResponseHandler.h"
69 #include "BESShowContextResponseHandler.h"
70 
71 #include "BESShowErrorResponseHandler.h"
72 
73 #include "BESTransmitterNames.h"
74 #include "BESReturnManager.h"
75 #include "BESTransmitter.h"
76 
77 #include "BESDebug.h"
78 
79 #include "BESTextInfo.h"
80 #include "BESHTMLInfo.h"
81 #include "BESXMLInfo.h"
82 #include "BESInfoList.h"
83 #include "BESInfoNames.h"
84 
85 int
86 BESDefaultModule::initialize(int, char**)
87 {
88  BESDEBUG( "bes", "Initializing default modules:" << endl ) ;
89 
90  BESDEBUG( "bes", " adding " << HELP_RESPONSE << " response handler" << endl ) ;
91  BESResponseHandlerList::TheList()->add_handler( HELP_RESPONSE, BESHelpResponseHandler::HelpResponseBuilder ) ;
92 
93 #ifdef BES_DEVELOPER
94  BESDEBUG( "bes", " adding " << PROCESS_RESPONSE << " response handler" << endl ) ;
95  BESResponseHandlerList::TheList()->add_handler( PROCESS_RESPONSE, BESProcIdResponseHandler::ProcIdResponseBuilder ) ;
96 
97  BESDEBUG( "bes", " adding " << CONFIG_RESPONSE << " response handler" << endl ) ;
98  BESResponseHandlerList::TheList()->add_handler( CONFIG_RESPONSE, BESConfigResponseHandler::ConfigResponseBuilder ) ;
99 #endif
100 
101  BESDEBUG( "bes", " adding " << VERS_RESPONSE << " response handler" << endl ) ;
102  BESResponseHandlerList::TheList()->add_handler( VERS_RESPONSE, BESVersionResponseHandler::VersionResponseBuilder ) ;
103 
104  BESDEBUG( "bes", " adding " << STATUS_RESPONSE << " response handler" << endl ) ;
105  BESResponseHandlerList::TheList()->add_handler( STATUS_RESPONSE, BESStatusResponseHandler::StatusResponseBuilder ) ;
106 
107  BESDEBUG( "bes", " adding " << SERVICE_RESPONSE << " response handler" << endl ) ;
108  BESResponseHandlerList::TheList()->add_handler( SERVICE_RESPONSE, BESServicesResponseHandler::ResponseBuilder ) ;
109 
110  BESDEBUG( "bes", " adding " << STREAM_RESPONSE << " response handler" << endl ) ;
111  BESResponseHandlerList::TheList()->add_handler( STREAM_RESPONSE, BESStreamResponseHandler::BESStreamResponseBuilder ) ;
112 
113  BESDEBUG( "bes", " adding " << SETCONTAINER << " response handler" << endl ) ;
114  BESResponseHandlerList::TheList()->add_handler( SETCONTAINER, BESSetContainerResponseHandler::SetContainerResponseBuilder ) ;
115 
116  BESDEBUG( "bes", " adding " << SHOWCONTAINERS_RESPONSE << " response handler" << endl ) ;
117  BESResponseHandlerList::TheList()->add_handler( SHOWCONTAINERS_RESPONSE, BESShowContainersResponseHandler::ShowContainersResponseBuilder ) ;
118 
119  BESDEBUG( "bes", " adding " << DELETE_CONTAINER << " response handler" << endl ) ;
120  BESResponseHandlerList::TheList()->add_handler( DELETE_CONTAINER, BESDelContainerResponseHandler::DelContainerResponseBuilder ) ;
121 
122  BESDEBUG( "bes", " adding " << DELETE_CONTAINERS << " response handler" << endl) ;
123  BESResponseHandlerList::TheList()->add_handler( DELETE_CONTAINERS, BESDelContainersResponseHandler::DelContainersResponseBuilder ) ;
124 
125  BESDEBUG( "bes", " adding " << PERSISTENCE_VOLATILE << " container persistence" << endl ) ;
126  BESContainerStorageList::TheList()->add_persistence( new BESContainerStorageVolatile( PERSISTENCE_VOLATILE ) ) ;
127 
128  BESDEBUG( "bes", " adding " << DEFINE_RESPONSE << " response handler" << endl ) ;
129  BESResponseHandlerList::TheList()->add_handler( DEFINE_RESPONSE, BESDefineResponseHandler::DefineResponseBuilder ) ;
130 
131  BESDEBUG( "bes", " adding " << SHOWDEFS_RESPONSE << " response handler" << endl) ;
132  BESResponseHandlerList::TheList()->add_handler( SHOWDEFS_RESPONSE, BESShowDefsResponseHandler::ShowDefsResponseBuilder ) ;
133 
134  BESDEBUG( "bes", " adding " << DELETE_DEFINITION << " response handler" << endl) ;
135  BESResponseHandlerList::TheList()->add_handler( DELETE_DEFINITION, BESDelDefResponseHandler::DelDefResponseBuilder ) ;
136 
137  BESDEBUG( "bes", " adding " << DELETE_DEFINITIONS << " response handler" << endl ) ;
138  BESResponseHandlerList::TheList()->add_handler( DELETE_DEFINITIONS, BESDelDefsResponseHandler::DelDefsResponseBuilder ) ;
139 
140  BESDEBUG( "bes", " adding " << PERSISTENCE_VOLATILE << " definition persistence" << endl ) ;
141  BESDefinitionStorageList::TheList()->add_persistence( new BESDefinitionStorageVolatile( PERSISTENCE_VOLATILE ) ) ;
142 
143  BESDEBUG( "bes", " adding " << SET_CONTEXT << " response handler" << endl) ;
144  BESResponseHandlerList::TheList()->add_handler( SET_CONTEXT, BESSetContextResponseHandler::SetContextResponseBuilder ) ;
145 
146  BESDEBUG( "bes", " adding " << SHOW_CONTEXT << " response handler" << endl) ;
147  BESResponseHandlerList::TheList()->add_handler( SHOW_CONTEXT, BESShowContextResponseHandler::ShowContextResponseBuilder ) ;
148 
149  BESDEBUG( "bes", " adding " << SHOW_ERROR << " response handler" << endl) ;
150  BESResponseHandlerList::TheList()->add_handler( SHOW_ERROR, BESShowErrorResponseHandler::ResponseBuilder ) ;
151 
152  BESDEBUG( "bes", " adding " << BASIC_TRANSMITTER << " transmitter" << endl ) ;
153  BESReturnManager::TheManager()->add_transmitter( BASIC_TRANSMITTER, new BESTransmitter ) ;
154 
155  BESDEBUG( "bes", " adding " << BES_TEXT_INFO << " info builder" << endl ) ;
156  BESInfoList::TheList()->add_info_builder( BES_TEXT_INFO,
157  BESTextInfo::BuildTextInfo ) ;
158 
159  BESDEBUG( "bes", " adding " << BES_HTML_INFO << " info builder" << endl ) ;
160  BESInfoList::TheList()->add_info_builder( BES_HTML_INFO,
161  BESHTMLInfo::BuildHTMLInfo ) ;
162 
163  BESDEBUG( "bes", " adding " << BES_XML_INFO << " info builder" << endl ) ;
164  BESInfoList::TheList()->add_info_builder( BES_XML_INFO,
165  BESXMLInfo::BuildXMLInfo ) ;
166 
167  BESDEBUG( "bes", " adding bes debug context" << endl ) ;
168  BESDebug::Register( "bes" ) ;
169 
170  BESDEBUG( "bes", "Done Initializing default modules:" << endl ) ;
171 
172  return 0 ;
173 }
174 
175 int
176 BESDefaultModule::terminate(void)
177 {
178  BESDEBUG( "bes", "Removing default modules" << endl ) ;
179 
180 #ifdef BES_DEVELOPER
181  BESResponseHandlerList::TheList()->remove_handler( PROCESS_RESPONSE ) ;
182  BESResponseHandlerList::TheList()->remove_handler( CONFIG_RESPONSE ) ;
183 #endif
184 
185  BESResponseHandlerList::TheList()->remove_handler( VERS_RESPONSE ) ;
186  BESResponseHandlerList::TheList()->remove_handler( STATUS_RESPONSE ) ;
187  BESResponseHandlerList::TheList()->remove_handler( SERVICE_RESPONSE ) ;
188  BESResponseHandlerList::TheList()->remove_handler( STREAM_RESPONSE ) ;
189  BESResponseHandlerList::TheList()->remove_handler( SETCONTAINER ) ;
190  BESResponseHandlerList::TheList()->remove_handler( SHOWCONTAINERS_RESPONSE ) ;
191  BESResponseHandlerList::TheList()->remove_handler( DELETE_CONTAINER ) ;
192  BESResponseHandlerList::TheList()->remove_handler( DELETE_CONTAINERS ) ;
193 
194  BESContainerStorageList::TheList()->deref_persistence( PERSISTENCE_VOLATILE ) ;
195 
196  BESResponseHandlerList::TheList()->remove_handler( DEFINE_RESPONSE ) ;
197  BESResponseHandlerList::TheList()->remove_handler( SHOWDEFS_RESPONSE ) ;
198  BESResponseHandlerList::TheList()->remove_handler( DELETE_DEFINITION ) ;
199  BESResponseHandlerList::TheList()->remove_handler( DELETE_DEFINITIONS ) ;
200 
201  BESDefinitionStorageList::TheList()->deref_persistence( PERSISTENCE_VOLATILE ) ;
202 
203  BESResponseHandlerList::TheList()->remove_handler( SET_CONTEXT ) ;
204  BESResponseHandlerList::TheList()->remove_handler( SHOW_CONTEXT ) ;
205  BESResponseHandlerList::TheList()->remove_handler( SHOW_ERROR ) ;
206 
207  BESReturnManager::TheManager()->del_transmitter( BASIC_TRANSMITTER ) ;
208 
209 
210  BESInfoList::TheList()->rem_info_builder( BES_TEXT_INFO ) ;
211  BESInfoList::TheList()->rem_info_builder( BES_HTML_INFO ) ;
212  BESInfoList::TheList()->rem_info_builder( BES_XML_INFO ) ;
213 
214 #if 0
215  // Original code
216  BESResponseHandlerList::TheList()->remove_handler( HELP_RESPONSE ) ;
217  BESResponseHandlerList::TheList()->remove_handler( VERS_RESPONSE ) ;
218  BESResponseHandlerList::TheList()->remove_handler( PROCESS_RESPONSE ) ;
219  BESResponseHandlerList::TheList()->remove_handler( CONFIG_RESPONSE ) ;
220  BESResponseHandlerList::TheList()->remove_handler( STATUS_RESPONSE ) ;
221  BESResponseHandlerList::TheList()->remove_handler( SERVICE_RESPONSE ) ;
222 
223  BESResponseHandlerList::TheList()->remove_handler( SETCONTAINER ) ;
224  BESResponseHandlerList::TheList()->remove_handler( SHOWCONTAINERS_RESPONSE ) ;
225  BESResponseHandlerList::TheList()->remove_handler( DELETE_CONTAINER ) ;
226  BESResponseHandlerList::TheList()->remove_handler( DELETE_CONTAINERS ) ;
227  BESContainerStorageList::TheList()->deref_persistence( PERSISTENCE_VOLATILE ) ;
228 
229  BESResponseHandlerList::TheList()->remove_handler( DEFINE_RESPONSE ) ;
230  BESResponseHandlerList::TheList()->remove_handler( SHOWDEFS_RESPONSE ) ;
231  BESResponseHandlerList::TheList()->remove_handler( DELETE_DEFINITION ) ;
232  BESResponseHandlerList::TheList()->remove_handler( DELETE_DEFINITIONS ) ;
233 
234  BESDefinitionStorageList::TheList()->deref_persistence( PERSISTENCE_VOLATILE ) ;
235 
236  BESResponseHandlerList::TheList()->remove_handler( SET_CONTEXT ) ;
237  BESResponseHandlerList::TheList()->remove_handler( SHOW_CONTEXT ) ;
238 
239  BESReturnManager::TheManager()->del_transmitter( BASIC_TRANSMITTER ) ;
240 #endif
241 
242  BESDEBUG( "bes", "Done Removing default modules" << endl ) ;
243 
244  return 0 ;
245 }
246 
provides volatile storage for a specific definition/view of different containers including contraints...
static void Register(const std::string &flagName)
register the specified debug flag
Definition: BESDebug.h:141
implementation of BESContainerStorage that stores containers in memory for the duration of this proce...
virtual bool add_persistence(BESContainerStorage *p)
Add a persistent store to the list.
virtual bool add_persistence(BESDefinitionStorage *p)
Add a persistent store to the list.
virtual bool deref_persistence(const string &persist_name)
dereference a persistent store in the list.
virtual bool add_handler(const string &handler, p_response_handler handler_method)
add a response handler to the list
virtual bool deref_persistence(const string &persist_name)
de-reference a persistent store in the list
virtual bool remove_handler(const string &handler)
removes a response handler from the list