X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Fcommand_server.cpp;h=21aeb798bfd420779292dcd498a1063e839b2a92;hp=2e3beb5b0d923e8ce63cf3f9f6e9b0ce1eea382a;hb=ab2a4234912fd8325e966235d592b632290413df;hpb=4b995a82e29808cf8125889f83ec70fc7b5c77af diff --git a/src/command_server.cpp b/src/command_server.cpp index 2e3beb5..21aeb79 100644 --- a/src/command_server.cpp +++ b/src/command_server.cpp @@ -1,21 +1,24 @@ -/*************************************************************************** - * Copyright (C) 2006 by Gerd v. Egidy * - * gve@intra2net.com * - * * - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ +/* +Copyright (C) 2006 by Intra2net AG - Gerd v. Egidy + +The software in this package is distributed under the GNU General +Public License version 2 (with a special exception described below). + +A copy of GNU General Public License (GPL) is included in this distribution, +in the file COPYING.GPL. + +As a special exception, if other files instantiate templates or use macros +or inline functions from this file, or you compile this file and link it +with other works to produce a work based on this file, this file +does not by itself cause the resulting work to be covered +by the GNU General Public License. + +However the source code for this file must still be made available +in accordance with section (3) of the GNU General Public License. + +This exception does not invalidate any other reasons why a work based +on this file might be covered by the GNU General Public License. +*/ #include #include @@ -34,9 +37,7 @@ #include "container.hxx" #include "log.hxx" -#ifdef HAVE_CONFIG_H #include -#endif using namespace std; @@ -50,11 +51,20 @@ command_server::command_server(server& _s) s.add_callback(new_connection,bind(&command_server::send_hello, boost::ref(*this), _1)); } +/** + * Destructor + */ +command_server::~command_server() +{ +} + /// send a hello message to a new connection void command_server::send_hello(unsigned int conn_id) { server_connection* sc=s.get_connection(conn_id); - // TODO: Gerd: Throw exception if get_connection() returns NULL or just return? + + if (!sc) + return; // connection not existing, so no hello std::ostringstream hello; @@ -90,8 +100,6 @@ void command_server::handle_packet(const std::string& packet, server_connection* "code " << e.code << " (" << e.what() << ")"; res.set_exception(new t2n_serialization_error(msg.str())); } - catch(...) - { throw; } if (!res.has_exception()) { @@ -113,8 +121,6 @@ void command_server::handle_packet(const std::string& packet, server_connection* } catch (t2n_exception &e) { res.set_exception(e.clone()); } - catch (...) - { throw; } } else { @@ -142,8 +148,6 @@ void command_server::handle_packet(const std::string& packet, server_connection* res.set_exception(new t2n_serialization_error(msg.str())); oa << res; } - catch(...) - { throw; } std::ostream* ostr; if ((ostr=s.get_logstream(fulldebug))!=NULL) @@ -164,19 +168,19 @@ void command_server::handle_packet(const std::string& packet, server_connection* void command_server::handle(long long usec_timeout, long long* usec_timeout_remaining) { guard_handle++; + try { if (s.fill_buffer(usec_timeout,usec_timeout_remaining)) { std::string packet; - unsigned int conn_id; + unsigned int conn_id = 0; while (s.get_packet(packet,conn_id)) { server_connection* conn=s.get_connection(conn_id); if (!conn) EXCEPTIONSTREAM(error,logic_error,"illegal connection id " << conn_id << " received"); - try { handle_packet(packet,conn); } catch (t2n_transfer_error &e) @@ -184,8 +188,6 @@ void command_server::handle(long long usec_timeout, long long* usec_timeout_rema // shut down a connection with transfer errors (usually write errors) conn->close(); } - catch(...) - { throw; } } } }