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