BESRequestHandler.cc

Go to the documentation of this file.
00001 // BESRequestHandler.cc
00002 
00003 // This file is part of bes, A C++ back-end server implementation framework
00004 // for the OPeNDAP Data Access Protocol.
00005 
00006 // Copyright (c) 2004-2009 University Corporation for Atmospheric Research
00007 // Author: Patrick West <pwest@ucar.edu> and Jose Garcia <jgarcia@ucar.edu>
00008 //
00009 // This library is free software; you can redistribute it and/or
00010 // modify it under the terms of the GNU Lesser General Public
00011 // License as published by the Free Software Foundation; either
00012 // version 2.1 of the License, or (at your option) any later version.
00013 // 
00014 // This library is distributed in the hope that it will be useful,
00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 // Lesser General Public License for more details.
00018 // 
00019 // You should have received a copy of the GNU Lesser General Public
00020 // License along with this library; if not, write to the Free Software
00021 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 //
00023 // You can contact University Corporation for Atmospheric Research at
00024 // 3080 Center Green Drive, Boulder, CO 80301
00025  
00026 // (c) COPYRIGHT University Corporation for Atmospheric Research 2004-2005
00027 // Please read the full copyright statement in the file COPYRIGHT_UCAR.
00028 //
00029 // Authors:
00030 //      pwest       Patrick West <pwest@ucar.edu>
00031 //      jgarcia     Jose Garcia <jgarcia@ucar.edu>
00032 
00033 #include "BESRequestHandler.h"
00034 
00050 bool
00051 BESRequestHandler::add_handler( const string &handler_name,
00052                                 p_request_handler handler_method )
00053 {
00054     if( find_handler( handler_name ) == 0 )
00055     {
00056         _handler_list[handler_name] = handler_method ;
00057         return true ;
00058     }
00059     return false ;
00060 }
00061 
00069 bool
00070 BESRequestHandler::remove_handler( const string &handler_name )
00071 {
00072     BESRequestHandler::Handler_iter i ;
00073     i = _handler_list.find( handler_name ) ;
00074     if( i != _handler_list.end() )
00075     {
00076         _handler_list.erase( i ) ;
00077         return true ;
00078     }
00079     return false ;
00080 }
00081 
00092 p_request_handler
00093 BESRequestHandler::find_handler( const string &handler_name )
00094 {
00095     BESRequestHandler::Handler_citer i ;
00096     i = _handler_list.find( handler_name ) ;
00097     if( i != _handler_list.end() )
00098     {
00099         return (*i).second;
00100     }
00101     return 0 ;
00102 }
00103 
00111 string
00112 BESRequestHandler::get_handler_names()
00113 {
00114     string ret ;
00115     bool first_name = true ;
00116     BESRequestHandler::Handler_citer i = _handler_list.begin() ;
00117     for( ; i != _handler_list.end(); i++ )
00118     {
00119         if( !first_name )
00120             ret += ", " ;
00121         ret += (*i).first ;
00122         first_name = false ;
00123     }
00124     return ret ;
00125 }
00126 
00134 void
00135 BESRequestHandler::dump( ostream &strm ) const
00136 {
00137     strm << BESIndent::LMarg << "BESRequestHandler::dump - ("
00138                              << (void *)this << ")" << endl ;
00139     BESIndent::Indent() ;
00140     strm << BESIndent::LMarg << "name: " << _name << endl ;
00141     if( _handler_list.size() )
00142     {
00143         strm << BESIndent::LMarg << "registered handler functions:" << endl ;
00144         BESIndent::Indent() ;
00145         BESRequestHandler::Handler_citer i = _handler_list.begin() ;
00146         BESRequestHandler::Handler_citer ie = _handler_list.end() ;
00147         for( ; i != ie; i++ )
00148         {
00149             strm << BESIndent::LMarg << (*i).first << endl ;
00150         }
00151         BESIndent::UnIndent() ;
00152     }
00153     else
00154     {
00155         strm << BESIndent::LMarg << "registered handler functions: none" << endl ;
00156     }
00157     BESIndent::UnIndent() ;
00158 }
00159 

Generated on Sat Aug 22 06:06:26 2009 for OPeNDAP Hyrax Back End Server (BES) by  doxygen 1.6.0