00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00038 #include "blocxx/BLOCXX_config.h"
00039 #include "blocxx/ServerSocket.hpp"
00040 #include "blocxx/Timeout.hpp"
00041
00042 namespace BLOCXX_NAMESPACE
00043 {
00044
00046 ServerSocket::ServerSocket(SSLServerCtxRef sslCtx)
00047 : SelectableIFC()
00048 , m_impl(new ServerSocketImpl(sslCtx))
00049 {
00050 }
00052 ServerSocket::ServerSocket(SocketFlags::ESSLFlag isSSL)
00053 : SelectableIFC()
00054 , m_impl(new ServerSocketImpl(isSSL))
00055 {
00056 }
00058 ServerSocket::ServerSocket(const ServerSocket& arg)
00059 : IntrusiveCountableBase()
00060 , SelectableIFC()
00061 , m_impl(arg.m_impl)
00062 {
00063 }
00065 Socket
00066 ServerSocket::accept(int timeoutSecs)
00067 {
00068 return accept(Timeout::relative(static_cast<float>(timeoutSecs)));
00069 }
00071 Socket
00072 ServerSocket::accept(const Timeout& timeout)
00073 {
00074 return m_impl->accept(timeout);
00075 }
00077 void
00078 ServerSocket::doListen(UInt16 port, SocketFlags::ESSLFlag isSSL, int queueSize,
00079 const String& listenAddr, SocketFlags::EReuseAddrFlag reuseAddr)
00080 {
00081 m_impl->doListen(port, isSSL, queueSize, listenAddr, reuseAddr);
00082 }
00084 void
00085 ServerSocket::doListen(UInt16 port, int queueSize,
00086 const String& listenAddr, SocketFlags::EReuseAddrFlag reuseAddr)
00087 {
00088 m_impl->doListen(port, queueSize, listenAddr, reuseAddr);
00089 }
00091 #ifndef BLOCXX_WIN32
00092 void
00093 ServerSocket::doListen(const String& filename, int queueSize, bool reuseAddr)
00094 {
00095 m_impl->doListenUDS(filename, queueSize, reuseAddr);
00096 }
00097 #endif
00098
00099 void
00100 ServerSocket::close()
00101 {
00102 m_impl->close();
00103 }
00105 SocketAddress
00106 ServerSocket::getLocalAddress()
00107 {
00108 return m_impl->getLocalAddress();
00109 }
00111 SocketHandle_t
00112 ServerSocket::getfd() const
00113 {
00114 return m_impl->getfd();
00115 }
00117 Select_t
00118 ServerSocket::getSelectObj() const
00119 {
00120 return m_impl->getSelectObj();
00121 }
00122
00123 }
00124