X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FSocketSink.hh;h=a815e5ff9aefe12bb2ab87297b4b97e95f838924;hb=refs%2Fheads%2Fmaster;hp=ee944ddf8ba9c46106bc00bf7fd3109a9b1688f9;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/PPI/SocketSink.hh b/senf/PPI/SocketSink.hh index ee944dd..a815e5f 100644 --- a/senf/PPI/SocketSink.hh +++ b/senf/PPI/SocketSink.hh @@ -2,23 +2,28 @@ // // Copyright (C) 2007 // 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 SocketSink public header */ @@ -27,19 +32,19 @@ #define HH_SENF_PPI_SocketSink_ 1 // Custom includes -#include "../Packets/Packets.hh" -#include "../Socket/ClientSocketHandle.hh" -#include "../Socket/SocketPolicy.hh" -#include "../Socket/ReadWritePolicy.hh" -#include "../Socket/FramingPolicy.hh" -#include "../Socket/CommunicationPolicy.hh" +#include +#include +#include +#include +#include +#include #include "Module.hh" #include "Connectors.hh" -#include "../Socket/Protocols/INet/INetAddressing.hh" +#include #include "IOEvent.hh" //#include "SocketSink.mpp" -///////////////////////////////hh.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace senf { namespace ppi { @@ -58,7 +63,7 @@ namespace ppi { ///< Handle type supported by this writer typedef Packet PacketType; - void operator()(Handle handle, Packet const & packet); + bool operator()(Handle & handle, Packet const & packet); ///< Write \a packet to \a handle /**< Write the complete \a packet as a datagram to \a handle. @@ -87,7 +92,7 @@ namespace ppi { typename Handle::Address target() const; ///< Get current target address void target(typename Handle::Address const & target); ///< Set target address - void operator()(Handle handle, Packet const & packet); ///< Write \a packet to \a handle + bool operator()(Handle & handle, Packet const & packet); ///< Write \a packet to \a handle /**< Write the complete \a packet as a datagram to \a handle. \param[in] handle Handle to write data to @@ -113,7 +118,7 @@ namespace ppi { void destination(senf::INet4SocketAddress & dest); senf::INet4SocketAddress destination(); - void operator()(Handle handle, Packet const & packet); + bool operator()(Handle & handle, Packet const & packet); ///< Write \a packet to \a handle /**< Write the complete \a packet as a datagram to \a handle. @@ -142,7 +147,7 @@ namespace ppi { void destination(senf::INet6SocketAddress & dest); senf::INet6SocketAddress destination(); - void operator()(Handle handle, Packet const & packet); + bool operator()(Handle & handle, Packet const & packet); ///< Write \a packet to \a handle /**< Write the complete \a packet as a datagram to \a handle. @@ -184,7 +189,7 @@ namespace module { SomeWriter(); // EITHER default constructible OR SomeWriter(SomeWriter const & other); // copy constructible - void operator()(Handle handle, Packet packet); // insertion function + bool operator()(Handle handle, Packet packet); // insertion function }; \endcode Whenever a packet is received for sending, the \a Writer's \c operator() is called. @@ -210,11 +215,12 @@ namespace module { \pre Requires \a Writer to be copy constructible \param[in] writer Writer helper writing packet date to the socket */ - explicit ActiveSocketSink(Handle handle); ///< Create new writer for the given handle + explicit ActiveSocketSink(Handle const & handle); + ///< Create new writer for the given handle /**< Data will be written to \a handle using \a Writer. \pre Requires \a Writer to be default constructible \param[in] handle Handle to write data to */ - ActiveSocketSink(Handle handle, Writer const & writer); + ActiveSocketSink(Handle const & handle, Writer const & writer); ///< Create new writer for the given handle /**< Data will be written to \a handle using \a Writer. \pre Requires \a Writer to be copy constructible @@ -224,7 +230,8 @@ namespace module { Writer & writer(); ///< Access the Writer Handle handle(); ///< Access handle - void handle(Handle handle); ///< Set handle + void handle(Handle const & handle); + ///< Set handle /**< Assigning an empty or in-valid() handle will disable the module until a new. valid handle is assigned. */ @@ -241,10 +248,10 @@ namespace module { able to handle complete datagrams. This output module will write data to a FileHandle object using a given \a Writer. This - output module is passive. This implies, that the output handle may not block. This also - implies, that data will probably get lost if written to fast for the underlying transport - mechanism. Either this is desired (like for a UDP socket) or some additional bandwidth - shaping needs to be used. + output module is passive. This implies, that the output handle may not block. This + also implies, that data will probably get lost if written to fast for the underlying + transport mechanism. Either this is desired (like for a UDP socket) or some additional + bandwidth shaping needs to be used. The default \a Writer is senf::ppi::ConnectedDgramWriter which will write out the complete packet to the file handle. @@ -260,7 +267,7 @@ namespace module { SomeWriter(); // EITHER default constructible SomeWriter(SomeWriter const & other); // OR copy constructible - void operator()(Handle handle, Packet packet); // insertion function + bool operator()(Handle handle, Packet packet); // insertion function }; \endcode Whenever a packet is received for sending, the \a Writer's \c operator() is called. @@ -286,11 +293,12 @@ namespace module { \pre Requires \a Writer to be copy constructible \param[in] writer Writer helper writing packet date to the socket */ - explicit PassiveSocketSink(Handle handle); ///< Create new writer for the given handle + explicit PassiveSocketSink(Handle const & handle); + ///< Create new writer for the given handle /**< Data will be written to \a handle using \a Writer. \pre Requires \a Writer to be default constructible \param[in] handle Handle to write data to */ - PassiveSocketSink(Handle handle, Writer const & writer); + PassiveSocketSink(Handle const & handle, Writer const & writer); ///< Create new writer for the given handle /**< Data will be written to \a handle using \a Writer. \pre Requires \a Writer to be copy constructible @@ -300,9 +308,10 @@ namespace module { Writer & writer(); ///< Access the Writer Handle & handle(); ///< Access handle - void handle(Handle handle); ///< Set handle + void handle(Handle const & handle); + ///< Set handle /**< Assigning an empty or in-valid() handle will disable - the module until a new. valid handle is assigned. */ + the module until a new valid handle is assigned. */ #ifndef DOXYGEN void replaceHandle(Handle newHandle); @@ -319,13 +328,13 @@ namespace module { }}} -///////////////////////////////hh.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #include "SocketSink.cci" #include "SocketSink.ct" #include "SocketSink.cti" #endif - + // Local Variables: // mode: c++ // fill-column: 100