4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
5 // Competence Center NETwork research (NET), St. Augustin, GERMANY
6 // Stefan Bund <g0dil@berlios.de>
8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 2 of the License, or
11 // (at your option) any later version.
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the
20 // Free Software Foundation, Inc.,
21 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 \brief TCPSocketProtocol public header
27 #ifndef HH_SENF_Socket_Protocols_INet_TCPSocketProtocol_
28 #define HH_SENF_Socket_Protocols_INet_TCPSocketProtocol_ 1
31 #include <senf/Socket/SocketProtocol.hh>
32 #include "INetSocketProtocol.hh"
34 //#include "TCPSocketProtocol.mpp"
35 ///////////////////////////////hh.p////////////////////////////////////////
39 /// \addtogroup protocol_facets_group
42 /** \brief Protocol facat to support TCP operations
44 This protocol facet provides all those protocol functions,
45 which are available on any TCP socket.
47 class TCPSocketProtocol
48 : public virtual INetSocketProtocol
51 bool nodelay() const; ///< Check current \c SO_NODELAY status
52 void nodelay(bool value) const; ///< Set \c SO_NODELAY status
53 /**< Enabling \c SO_NODELAY will disable the NAGLE
54 algorithm (which aggregates multiple writes into a
55 single network packet). Enabling nodelay() optimizes
56 the repsonse time at the expense of the bandwidth
58 \param[in] value \c SO_NODELAY state */
60 unsigned siocinq() const; ///< Return current size of the input queue
61 unsigned siocoutq() const; ///< Return current size of the output queue
63 enum ShutType { ShutRD, ShutWR, ShutRDWR };
64 void shutdown(ShutType type) const;
66 ///\name Abstract Interface Implementation
70 unsigned available() const;
79 ///////////////////////////////hh.e////////////////////////////////////////
80 //#include "TCPSocketProtocol.cci"
81 //#include "TCPSocketProtocol.ct"
82 //#include "TCPSocketProtocol.cti"
89 // c-file-style: "senf"
90 // indent-tabs-mode: nil
91 // ispell-local-dictionary: "american"
92 // compile-command: "scons -u test"