X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FReadWritePolicy.cc;h=a573e5d0f863a56d791728780b7fffc7fb2536ed;hb=refs%2Fheads%2Fmaster;hp=3c3138aae7cec06f1e9dbfeeb77ea847999c9e06;hpb=f1c9ab57a860991343408d3e077690f6073be0fe;p=senf.git diff --git a/senf/Socket/ReadWritePolicy.cc b/senf/Socket/ReadWritePolicy.cc index 3c3138a..a573e5d 100644 --- a/senf/Socket/ReadWritePolicy.cc +++ b/senf/Socket/ReadWritePolicy.cc @@ -2,29 +2,36 @@ // // Copyright (C) 2006 // Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY -// Stefan Bund // -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// This program 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 General Public License for more details. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// You should have received a copy of the GNU 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. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// Stefan Bund /** \file \brief ReadPolicy and WritePolicy non-inline non-template implementation */ #include "ReadWritePolicy.hh" +#include "senf/Utils/hexdump.hh" +#include "senf/Utils/String.hh" //#include "ReadWritePolicy.ih" // Custom includes @@ -33,12 +40,11 @@ #include #include - //#include "ReadWritePolicy.mpp" #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -prefix_ unsigned senf::ReadablePolicy::read(FileHandle handle, char * buffer, +prefix_ unsigned senf::ReadablePolicy::read(FileHandle & handle, char * buffer, unsigned size) { int rv = -1; @@ -53,13 +59,13 @@ prefix_ unsigned senf::ReadablePolicy::read(FileHandle handle, char * buffer, rv = 0; break; default: - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION(":::read"); } } while (rv<0); return rv; } -prefix_ unsigned senf::ReadablePolicy::do_readfrom(FileHandle handle, char * buffer, +prefix_ unsigned senf::ReadablePolicy::do_readfrom(FileHandle & handle, char * buffer, unsigned size, struct ::sockaddr * addr, socklen_t * len) { @@ -74,13 +80,13 @@ prefix_ unsigned senf::ReadablePolicy::do_readfrom(FileHandle handle, char * buf rv = 0; break; default: - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::recvfrom"); } } while (rv<0); return rv; } -prefix_ unsigned senf::WriteablePolicy::do_write(FileHandle handle, char const * buffer, +prefix_ unsigned senf::WriteablePolicy::do_write(FileHandle & handle, char const * buffer, unsigned size) { int rv = -1; @@ -103,13 +109,13 @@ prefix_ unsigned senf::WriteablePolicy::do_write(FileHandle handle, char const * rv = 0; break; default: - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("::write"); } } while (rv<0); return rv; } -prefix_ unsigned senf::WriteablePolicy::do_writeto(FileHandle handle, +prefix_ unsigned senf::WriteablePolicy::do_writeto(FileHandle & handle, char const * buffer, unsigned size, struct sockaddr const * addr, socklen_t len) { @@ -127,13 +133,16 @@ prefix_ unsigned senf::WriteablePolicy::do_writeto(FileHandle handle, rv = 0; break; default: - SENF_THROW_SYSTEM_EXCEPTION(""); + std::stringstream a, b; + senf::hexdump( (char*) addr , ((char*) addr) + len , a); + senf::hexdump( (char*) buffer , ((char*) buffer) + size , b); + SENF_THROW_SYSTEM_EXCEPTION("::sendto(" + b.str() + ") to " + a.str()); } } while (rv<0); return rv; } -///////////////////////////////cc.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_ //#include "ReadWritePolicy.mpp"