bes Updated for version 3.20.13
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 "config.h"
34
35#include <iostream>
36
37#include "BESDefaultModule.h"
38
39#include "BESNames.h"
40#include "BESResponseNames.h"
41#include "BESResponseHandlerList.h"
42
43#include "BESHelpResponseHandler.h"
44#include "BESVersionResponseHandler.h"
45
46#ifdef BES_DEVELOPER
47#include "BESProcIdResponseHandler.h"
48#include "BESConfigResponseHandler.h"
49#endif
50
51#include "BESStatusResponseHandler.h"
52#include "BESServicesResponseHandler.h"
53#include "BESStreamResponseHandler.h"
54
55#include "BESSetContainerResponseHandler.h"
56#include "BESShowContainersResponseHandler.h"
57#include "BESDelContainerResponseHandler.h"
58#include "BESDelContainersResponseHandler.h"
59#include "BESContainerStorageList.h"
60#include "BESContainerStorageVolatile.h"
61
62#include "BESCatalogResponseHandler.h"
63#include "ShowNodeResponseHandler.h"
64
65#include "BESDefineResponseHandler.h"
66#include "BESShowDefsResponseHandler.h"
67#include "BESDelDefResponseHandler.h"
68#include "BESDelDefsResponseHandler.h"
69#include "BESDefinitionStorageList.h"
70#include "BESDefinitionStorageVolatile.h"
71
72#include "BESSetContextResponseHandler.h"
73#include "BESShowContextResponseHandler.h"
74#include "BESShowErrorResponseHandler.h"
75
76#include "BESTransmitterNames.h"
77#include "BESReturnManager.h"
78#include "BESTransmitter.h"
79
80#include "BESDebug.h"
81
82#include "BESTextInfo.h"
83#include "BESHTMLInfo.h"
84#include "BESXMLInfo.h"
85#include "BESInfoList.h"
86#include "BESInfoNames.h"
87
88using namespace std;
89using namespace bes;
90
91int BESDefaultModule::initialize(int, char**)
92{
93 BESDEBUG("bes", "Initializing default modules:" << endl);
94
95 // TODO Remove this. jhrg 12/27/18
96 //BESContainerStorageList::TheList()->add_persistence(new BESContainerStorageVolatile( DEFAULT ));
97 //BESContainerStorageList::TheList()->add_persistence(new BESContainerStorageVolatile( CATALOG ));
98
99 // This is the only place the Definition Storage is set. I set both DEFAULT and CATALOG so that
100 // code that uses those names will work.
101 // TODO Remove 'catalog' and change the way define command works to use DEFAULT by
102 BESDefinitionStorageList::TheList()->add_persistence(new BESDefinitionStorageVolatile( DEFAULT ));
103 BESDefinitionStorageList::TheList()->add_persistence(new BESDefinitionStorageVolatile( CATALOG ));
104
105 BESResponseHandlerList::TheList()->add_handler( HELP_RESPONSE, BESHelpResponseHandler::HelpResponseBuilder);
106
107#ifdef BES_DEVELOPER
108 BESResponseHandlerList::TheList()->add_handler( PROCESS_RESPONSE, BESProcIdResponseHandler::ProcIdResponseBuilder );
109 BESResponseHandlerList::TheList()->add_handler( CONFIG_RESPONSE, BESConfigResponseHandler::ConfigResponseBuilder );
110#endif
111
112 BESResponseHandlerList::TheList()->add_handler( VERS_RESPONSE, BESVersionResponseHandler::VersionResponseBuilder);
113 BESResponseHandlerList::TheList()->add_handler( STATUS_RESPONSE, BESStatusResponseHandler::StatusResponseBuilder);
114 BESResponseHandlerList::TheList()->add_handler( SERVICE_RESPONSE, BESServicesResponseHandler::ResponseBuilder);
115 BESResponseHandlerList::TheList()->add_handler( STREAM_RESPONSE, BESStreamResponseHandler::BESStreamResponseBuilder);
116 BESResponseHandlerList::TheList()->add_handler( SETCONTAINER, BESSetContainerResponseHandler::SetContainerResponseBuilder);
117 BESResponseHandlerList::TheList()->add_handler( SHOWCONTAINERS_RESPONSE, BESShowContainersResponseHandler::ShowContainersResponseBuilder);
118 BESResponseHandlerList::TheList()->add_handler( DELETE_CONTAINER, BESDelContainerResponseHandler::DelContainerResponseBuilder);
119 BESResponseHandlerList::TheList()->add_handler( DELETE_CONTAINERS, BESDelContainersResponseHandler::DelContainersResponseBuilder);
120
121 BESResponseHandlerList::TheList()->add_handler( CATALOG_RESPONSE, BESCatalogResponseHandler::CatalogResponseBuilder);
122 BESResponseHandlerList::TheList()->add_handler( NODE_RESPONSE, ShowNodeResponseHandler::ShowNodeResponseBuilder);
123
124
125 BESResponseHandlerList::TheList()->add_handler( DEFINE_RESPONSE, BESDefineResponseHandler::DefineResponseBuilder);
126 BESResponseHandlerList::TheList()->add_handler( SHOWDEFS_RESPONSE, BESShowDefsResponseHandler::ShowDefsResponseBuilder);
127 BESResponseHandlerList::TheList()->add_handler( DELETE_DEFINITION, BESDelDefResponseHandler::DelDefResponseBuilder);
128 BESResponseHandlerList::TheList()->add_handler( DELETE_DEFINITIONS, BESDelDefsResponseHandler::DelDefsResponseBuilder);
129
130 BESResponseHandlerList::TheList()->add_handler( SET_CONTEXT, BESSetContextResponseHandler::SetContextResponseBuilder);
131
132 BESResponseHandlerList::TheList()->add_handler( SHOW_CONTEXT, BESShowContextResponseHandler::ShowContextResponseBuilder);
133 BESResponseHandlerList::TheList()->add_handler( SHOW_ERROR, BESShowErrorResponseHandler::ResponseBuilder);
134
135 BESReturnManager::TheManager()->add_transmitter( BASIC_TRANSMITTER, new BESTransmitter);
136
137 BESInfoList::TheList()->add_info_builder( BES_TEXT_INFO, BESTextInfo::BuildTextInfo);
138 BESInfoList::TheList()->add_info_builder( BES_HTML_INFO, BESHTMLInfo::BuildHTMLInfo);
139 BESInfoList::TheList()->add_info_builder( BES_XML_INFO, BESXMLInfo::BuildXMLInfo);
140
141 BESDebug::Register("bes");
142
143 BESDEBUG("bes", "Done Initializing default modules:" << endl);
144
145 return 0;
146}
147
148int BESDefaultModule::terminate(void)
149{
150 BESDEBUG("bes", "Removing default modules" << endl);
151
152#ifdef BES_DEVELOPER
153 BESResponseHandlerList::TheList()->remove_handler( PROCESS_RESPONSE );
154 BESResponseHandlerList::TheList()->remove_handler( CONFIG_RESPONSE );
155#endif
156
157 BESResponseHandlerList::TheList()->remove_handler( VERS_RESPONSE );
158 BESResponseHandlerList::TheList()->remove_handler( STATUS_RESPONSE );
159 BESResponseHandlerList::TheList()->remove_handler( SERVICE_RESPONSE );
160 BESResponseHandlerList::TheList()->remove_handler( STREAM_RESPONSE );
161 BESResponseHandlerList::TheList()->remove_handler( SETCONTAINER );
162 BESResponseHandlerList::TheList()->remove_handler( SHOWCONTAINERS_RESPONSE );
163 BESResponseHandlerList::TheList()->remove_handler( DELETE_CONTAINER );
164 BESResponseHandlerList::TheList()->remove_handler( DELETE_CONTAINERS );
165
166 BESResponseHandlerList::TheList()->remove_handler(CATALOG_RESPONSE );
167
168 BESResponseHandlerList::TheList()->remove_handler( DEFINE_RESPONSE );
169 BESResponseHandlerList::TheList()->remove_handler( SHOWDEFS_RESPONSE );
170 BESResponseHandlerList::TheList()->remove_handler( DELETE_DEFINITION );
171 BESResponseHandlerList::TheList()->remove_handler( DELETE_DEFINITIONS );
172
173 BESResponseHandlerList::TheList()->remove_handler( SET_CONTEXT );
174 BESResponseHandlerList::TheList()->remove_handler( SHOW_CONTEXT );
175 BESResponseHandlerList::TheList()->remove_handler( SHOW_ERROR );
176
177 BESReturnManager::TheManager()->del_transmitter( BASIC_TRANSMITTER );
178
179 BESInfoList::TheList()->rem_info_builder( BES_TEXT_INFO );
180 BESInfoList::TheList()->rem_info_builder( BES_HTML_INFO );
181 BESInfoList::TheList()->rem_info_builder( BES_XML_INFO );
182
183 BESDefinitionStorageList::TheList()->deref_persistence( DEFAULT );
184 BESDefinitionStorageList::TheList()->deref_persistence( CATALOG );
185
186 BESDEBUG("bes", "Done Removing default modules" << endl);
187
188 return 0;
189}
190
static void Register(const std::string &flagName)
register the specified debug flag
Definition: BESDebug.h:149
virtual bool add_persistence(BESDefinitionStorage *p)
Add a persistent store to the list.
virtual bool deref_persistence(const std::string &persist_name)
de-reference a persistent store in the list
provides volatile storage for a specific definition/view of different containers including contraints...
virtual bool remove_handler(const std::string &handler)
removes a response handler from the list
virtual bool add_handler(const std::string &handler, p_response_handler handler_method)
add a response handler to the list