X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FCommunicationPolicy.hh;h=47dc01f57943efd0c259d0681a7292002910baf7;hb=532240d72e09e19e57fac9bb55c2560b9c9e5b97;hp=71fe0bda8fe699a03c81d56d30f2735fa7f3b5ea;hpb=245bdb920e5f8fc1150794db8d0b42a15fa2cd15;p=senf.git diff --git a/Socket/CommunicationPolicy.hh b/Socket/CommunicationPolicy.hh index 71fe0bd..47dc01f 100644 --- a/Socket/CommunicationPolicy.hh +++ b/Socket/CommunicationPolicy.hh @@ -1,9 +1,9 @@ // $Id$ // -// Copyright (C) 2006 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// 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 @@ -24,8 +24,8 @@ \brief CommunicationPolicy public header */ -#ifndef HH_CommunicationPolicy_ -#define HH_CommunicationPolicy_ 1 +#ifndef HH_SENF_Socket_CommunicationPolicy_ +#define HH_SENF_Socket_CommunicationPolicy_ 1 // Custom includes #include "SocketPolicy.hh" @@ -41,48 +41,70 @@ namespace senf { /// \addtogroup policy_impl_group /// @{ - - template class ServerSocketHandle; + + template class ServerSocketHandle; /** \brief CommunicationPolicy for connected sockets - The ConnectedCommunicationPolicy provides support for standard BSD socket API based - connected communication. It provides the server side listen() and accept() members. + The ConnectedCommunicationPolicy provides support for standard BSD socket API based + connected communication. It provides the server side listen() and accept() members. */ struct ConnectedCommunicationPolicy : public CommunicationPolicyBase { - static void listen(FileHandle handle, unsigned backlog); +# ifndef DOXYGEN + template + static void listen(ServerSocketHandle handle, unsigned backlog, + typename IfAddressingPolicyIsNot::type * = 0); +# else + template + static void listen(ServerSocketHandle handle, unsigned backlog); ///< Enable establishing new connections on the socket /**< \param[in] handle socket handle to enable reception on - \param[in] backlog size of backlog queue - - \fixme listen probably makes no sense without accpept, - so listen() should debend on AddressingPolicy - too. */ - template - static int accept(ServerSocketHandle handle, - typename ServerSocketHandle::Address & address, - typename IfAddressingPolicyIsNot::type * = 0); + \param[in] backlog size of backlog queue */ +# endif + +# ifndef DOXYGEN + template + static int accept(ServerSocketHandle handle, + typename ServerSocketHandle::Address & address, + typename IfAddressingPolicyIsNot::type * = 0); +# else + template + static int accept(ServerSocketHandle handle, + typename ServerSocketHandle::Address & address); + ///< accept a new connection on the socket. + /**< The accept() member will return a new client file + descriptor. This file descriptor will be used by the + ServerSocketHandle implementation to build a new + ClientSocketHandle for the new connection. + + \param[in] handle socket handle to accept connection on + \param[out] address address of newly connected remote + peer + \returns file descriptor of new client socket */ +# endif + + static int accept(FileHandle handle); ///< accept a new connection on the socket. /**< The accept() member will return a new client file - descriptor. This file descriptor will be used by the - ServerSocketHandle implementation to build a new - ClientSocketHandle for the new connection. - - \param[in] handle socket handle to accept connection on - \param[out] address address of newly connected remote - peer - \returns file descriptor of new client socket */ + descriptor. This file descriptor will be used by the + ServerSocketHandle implementation to build a new + ClientSocketHandle for the new connection. + + \param[in] handle socket handle to accept connection on + \returns file descriptor of new client socket */ + private: + static void do_listen(FileHandle handle, unsigned backlog); static int do_accept(FileHandle handle, struct sockaddr * addr, unsigned len); }; /** \brief CommunicationPolicy for unconnected sockets - This is different from UndefinedCommunicationPolicy (which is the same as - CommunicationPolicyBase). This policy class defines the communication policy -- it - explicitly states, that the socket does not support connected communication. This - effektively disables ther ServerSocketHandle. + This is different from UndefinedCommunicationPolicy (which is the same as + CommunicationPolicyBase). This policy class defines the communication policy -- it + explicitly states, that the socket does not support connected communication. This + effectively disables the ServerSocketHandle. */ struct UnconnectedCommunicationPolicy : public CommunicationPolicyBase {}; @@ -93,7 +115,7 @@ namespace senf { ///////////////////////////////hh.e//////////////////////////////////////// -//#include "CommunicationPolicy.cci" +#include "CommunicationPolicy.cci" //#include "CommunicationPolicy.ct" #include "CommunicationPolicy.cti" #endif @@ -101,6 +123,10 @@ namespace senf { // Local Variables: // mode: c++ -// c-file-style: "senf" // fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 // End: