X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Fcommand_client.cpp;h=924fdbf59c10e90b3a9fd882073823ed73b7c038;hp=52ca0f15774ad89403b01758bd32d2ec59756bf2;hb=44b4600fd51677e54dd167734ca9252b58237cda;hpb=487afb796c9547de4353c503939b6666f8e0877d diff --git a/src/command_client.cpp b/src/command_client.cpp index 52ca0f1..924fdbf 100644 --- a/src/command_client.cpp +++ b/src/command_client.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 @@ -30,17 +33,22 @@ #include "command_client.hxx" -#ifdef HAVE_CONFIG_H #include -#endif using namespace std; namespace libt2n { +/** + * Constructor + * @param _c connection for this command. Ownership of the pointer is outside. + * @param _command_timeout_usec timeout until the command has to be completed + * @param _hello_timeout_usec timeout until hello has to be received + */ command_client::command_client(client_connection* _c, long long _command_timeout_usec, long long _hello_timeout_usec) : c(_c) + , constructorException(NULL) { command_timeout_usec=_command_timeout_usec; hello_timeout_usec=_hello_timeout_usec; @@ -60,16 +68,23 @@ command_client::command_client(client_connection* _c, long long _command_timeout c->close(); // store a copy of the exception that you can find out details about the error later - std::auto_ptr tmp(e.clone()); - constructorException=tmp; - } - catch (...) - { - throw; + constructorException = e.clone(); } } } +/** + * Destructor + */ +command_client::~command_client() +{ + if (constructorException) + { + delete constructorException; + constructorException = NULL; + } +} + /** @brief replace the connection currently in use with a new one @param _c pointer to the new connection @@ -250,8 +265,6 @@ void command_client::send_command(command* cmd, result_container &res) msg << "archive_exception while serializing on client-side, code " << e.code << " (" << e.what() << ")"; throw t2n_serialization_error(msg.str()); } - catch(...) - { throw; } std::ostream* ostr; if ((ostr=c->get_logstream(fulldebug))!=NULL) @@ -259,7 +272,7 @@ void command_client::send_command(command* cmd, result_container &res) (*ostr) << "sending command, decoded data: " << std::endl; boost::archive::xml_oarchive xo(*ostr); xo << BOOST_SERIALIZATION_NVP(cc); - } + } c->write(ofs.str()); @@ -276,8 +289,6 @@ void command_client::send_command(command* cmd, result_container &res) msg << "archive_exception while deserializing on client-side, code " << e.code << " (" << e.what() << ")"; throw t2n_serialization_error(msg.str()); } - catch(...) - { throw; } if ((ostr=c->get_logstream(fulldebug))!=NULL) {