X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FProtocols%2FBSDSocketProtocol.cc;h=f075af741e4ffe38230a2dc238327735d04a683f;hb=51b24c3227717ce5ad8111a99c2d7eea5fa0bd8d;hp=850f60d2cfd42d495c4904fddf2e3ddc5686dd9a;hpb=3fe2ed38b800bcb57afff676698462e763724245;p=senf.git diff --git a/senf/Socket/Protocols/BSDSocketProtocol.cc b/senf/Socket/Protocols/BSDSocketProtocol.cc index 850f60d..f075af7 100644 --- a/senf/Socket/Protocols/BSDSocketProtocol.cc +++ b/senf/Socket/Protocols/BSDSocketProtocol.cc @@ -2,23 +2,28 @@ // // 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 BSDSocketProtocol non-inline non-template implementation */ @@ -30,11 +35,10 @@ #include #include #include -#include //#include "BSDSocketProtocol.mpp" #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// prefix_ std::pair senf::BSDSocketProtocol::linger() const @@ -43,7 +47,7 @@ prefix_ std::pair senf::BSDSocketProtocol::linger() socklen_t len = sizeof(ling); ::memset(&ling, 0, sizeof(ling)); if (::getsockopt(fd(),SOL_SOCKET,SO_LINGER,&ling,&len) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("could not get socketopt SO_LINGER"); return std::make_pair(ling.l_onoff, ling.l_linger); } @@ -54,7 +58,7 @@ prefix_ void senf::BSDSocketProtocol::linger(bool enable, unsigned timeout) ling.l_onoff = enable; ling.l_linger = timeout; if (::setsockopt(fd(),SOL_SOCKET,SO_LINGER,&ling,sizeof(ling)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("could not set socketopt SO_LINGER"); } prefix_ boost::uint8_t senf::BSDSocketProtocol::priority() @@ -63,7 +67,7 @@ prefix_ boost::uint8_t senf::BSDSocketProtocol::priority() int value; socklen_t len (sizeof(value)); if (::getsockopt(fd(),SOL_SOCKET,SO_PRIORITY,&value,&len) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("could not get socketopt SO_PRIORITY"); return value; } @@ -72,7 +76,7 @@ prefix_ void senf::BSDSocketProtocol::priority(boost::uint8_t value) { int ivalue (value); if (::setsockopt(fd(),SOL_SOCKET,SO_PRIORITY,&ivalue,sizeof(ivalue)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("could not set socketopt SO_PRIORITY"); } prefix_ int senf::BSDSocketProtocol::error() @@ -81,7 +85,7 @@ prefix_ int senf::BSDSocketProtocol::error() int err; socklen_t len (sizeof(err)); if (::getsockopt(fd(),SOL_SOCKET,SO_ERROR,&err,&len) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("could not get socketopt SO_ERROR"); return err; } @@ -91,7 +95,7 @@ prefix_ unsigned senf::BSDSocketProtocol::rcvbuf() unsigned size; socklen_t len (sizeof(size)); if (::getsockopt(fd(),SOL_SOCKET,SO_RCVBUF,&size,&len) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("could not get socketopt SO_RCVBUF"); // Linux doubles the bufer size on setting the RCVBUF to cater for internal // headers. We fix this up here .. (see lkml FAQ) return size/2; @@ -101,7 +105,7 @@ prefix_ void senf::BSDSocketProtocol::rcvbuf(unsigned size) const { if (::setsockopt(fd(),SOL_SOCKET,SO_RCVBUF,&size,sizeof(size)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("could not set socketopt SO_RCVBUF"); } prefix_ unsigned senf::BSDSocketProtocol::sndbuf() @@ -110,7 +114,7 @@ prefix_ unsigned senf::BSDSocketProtocol::sndbuf() unsigned size; socklen_t len (sizeof(size)); if (::getsockopt(fd(),SOL_SOCKET,SO_SNDBUF,&size,&len) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("could not get socketopt SO_SNDBUF"); // Linux doubles the bufer size on setting the SNDBUF to cater for internal // headers. We fix this up here .. (see lkml FAQ) return size/2; @@ -120,10 +124,10 @@ prefix_ void senf::BSDSocketProtocol::sndbuf(unsigned size) const { if (::setsockopt(fd(),SOL_SOCKET,SO_SNDBUF,&size,sizeof(size)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("could not set socketopt SO_SNDBUF"); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// prefix_ bool senf::AddressableBSDSocketProtocol::reuseaddr() const @@ -131,7 +135,7 @@ prefix_ bool senf::AddressableBSDSocketProtocol::reuseaddr() int value; socklen_t len (sizeof(value)); if (::getsockopt(fd(),SOL_SOCKET,SO_REUSEADDR,&value,&len) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("could not get socketopt SO_REUSEADDR"); return value; } @@ -140,10 +144,10 @@ prefix_ void senf::AddressableBSDSocketProtocol::reuseaddr(bool value) { int ivalue (value); if (::setsockopt(fd(),SOL_SOCKET,SO_REUSEADDR,&ivalue,sizeof(ivalue)) < 0) - SENF_THROW_SYSTEM_EXCEPTION(""); + SENF_THROW_SYSTEM_EXCEPTION("could not set socketopt SO_REUSEADDR"); } -/////////////////////////////cc.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_ //#include "BSDSocketProtocol.mpp"