bes Updated for version 3.21.1
The Backend Server (BES) is the lower two tiers of the Hyrax data server
BESXMLDapCommandModule.cc
1// BESXMLDapCommandModule.cc
2
3// This file is part of bes, A C++ back-end server implementation framework
4// for the DAP 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 "BESResponseHandlerList.h"
38#include "BESXMLDapCommandModule.h"
39#include "BESDapNames.h"
40#include "BESNames.h"
41#include "BESDebug.h"
42#include "BESXMLCatalogCommand.h"
43// #include "SiteMapCommandNames.h"
44#include "SiteMapCommand.h" // Uses NullResponseHandler
45#include "SiteMapResponseHandler.h"
46#include "ShowNodeCommand.h" // Could use NullResponseHandler. jhrg 7/23/18
47
48using namespace bes;
49using std::endl;
50using std::cout;
51using std::ostream;
52using std::string;
53
63void BESXMLDapCommandModule::initialize(const string &/*modname*/)
64{
65 BESDEBUG("dap", "Initializing DAP Commands:" << endl);
66
67 BESXMLCommand::add_command(CATALOG_RESPONSE_STR, BESXMLCatalogCommand::CommandBuilder);
69
70 // Build a site map. Originally used the Null Response Handler, now
71 // it returns a response to the caller. jhrg 11/26/18
73 BESResponseHandlerList::TheList()->add_handler(SITE_MAP_RESPONSE, SiteMapResponseHandler::SiteMapResponseBuilder);
74
75 BESDEBUG("dap", "Done Initializing DAP Commands:" << endl);
76}
77
86void BESXMLDapCommandModule::terminate(const string &/*modname*/)
87{
88 BESDEBUG("dap", "Removing DAP Commands" << endl);
89
90 BESXMLCommand::del_command(CATALOG_RESPONSE_STR);
91 BESXMLCommand::del_command(SITE_MAP_RESPONSE_STR);
92
93 BESResponseHandlerList::TheList()->remove_handler(SITE_MAP_RESPONSE);
94
95 BESDEBUG("dap", "Done Removing DAP Commands" << endl);
96}
97
104void BESXMLDapCommandModule::dump(ostream &strm) const
105{
106 strm << BESIndent::LMarg << "BESXMLDapCommandModule::dump - (" << (void *) this << ")" << endl;
107}
108
109extern "C" {
110
111BESAbstractModule *maker()
112{
113 return new BESXMLDapCommandModule;
114}
115
116}
117
static void del_command(const std::string &cmd_str)
Deletes the command called cmd_str from the list of possible commands.
static void add_command(const std::string &cmd_str, p_xmlcmd_builder cmd)
Add a command to the possible commands allowed by this BES.
virtual void terminate(const std::string &modname)
Cleans up the DAP XML commands from the list of possible commands.
virtual void initialize(const std::string &modname)
Adds the basic DAP XML command objects to the XMLCommand list of possible commands.
virtual void dump(std::ostream &strm) const
dumps information about this object
static BESXMLCommand * CommandBuilder(const BESDataHandlerInterface &base_dhi)
Factory for the SiteMapCommand.
static BESXMLCommand * CommandBuilder(const BESDataHandlerInterface &base_dhi)
A command builder suitable for BESXMLCommand::add_command()