00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00027
00028
00029
00030 #include "SocketHandle.hh"
00031
00032 #define prefix_ inline
00033
00034
00035
00036
00037
00038 template <class SocketPolicy, class Self>
00039 prefix_ senf::ConcreteSocketProtocol<SocketPolicy,Self>::~ConcreteSocketProtocol()
00040 {}
00041
00042 template <class SocketPolicy, class Self>
00043 prefix_ typename senf::ConcreteSocketProtocol<SocketPolicy,Self>::Policy const &
00044 senf::ConcreteSocketProtocol<SocketPolicy,Self>::policy()
00045 const
00046 {
00047 return policy_;
00048 }
00049
00050 template <class SocketPolicy, class Self>
00051 prefix_ std::auto_ptr<senf::SocketBody>
00052 senf::ConcreteSocketProtocol<SocketPolicy,Self>::clone(bool isServer)
00053 const
00054 {
00055 return std::auto_ptr<SocketBody>(new ProtocolSocketBody<Self>(isServer));
00056 }
00057
00058 template <class SocketPolicy, class Self>
00059 prefix_ std::auto_ptr<senf::SocketBody>
00060 senf::ConcreteSocketProtocol<SocketPolicy,Self>::clone(int fd, bool isServer)
00061 const
00062 {
00063 return std::auto_ptr<SocketBody>(new ProtocolSocketBody<Self>(isServer, fd));
00064 }
00065
00066 template <class SocketPolicy, class Self>
00067 prefix_ senf::SocketBody & senf::ConcreteSocketProtocol<SocketPolicy,Self>::body()
00068 const
00069 {
00070 return const_cast< ProtocolSocketBody<Self> &>(
00071 static_cast< ProtocolSocketBody<Self> const & >(*this));
00072 }
00073
00074
00075
00076
00077 template <class SocketPolicy, class Self>
00078 prefix_ senf::ClientSocketHandle<SocketPolicy>
00079 senf::ConcreteSocketProtocol<SocketPolicy,Self>::clientHandle()
00080 const
00081 {
00082 return static_socket_cast< ClientSocketHandle<Policy> >(fh());
00083 }
00084
00085 template <class SocketPolicy, class Self>
00086 prefix_ senf::ServerSocketHandle<SocketPolicy>
00087 senf::ConcreteSocketProtocol<SocketPolicy,Self>::serverHandle()
00088 const
00089 {
00090 return static_socket_cast< ServerSocketHandle<Policy> >(fh());
00091 }
00092
00093
00094 #undef prefix_
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105