00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _DECAF_INTERNAL_NET_SSL_OPENSSL_OPENSSLSOCKETFACTORY_H_
00019 #define _DECAF_INTERNAL_NET_SSL_OPENSSL_OPENSSLSOCKETFACTORY_H_
00020
00021 #include <decaf/util/Config.h>
00022
00023 #include <decaf/net/ssl/SSLSocketFactory.h>
00024
00025 namespace decaf {
00026 namespace internal {
00027 namespace net {
00028 namespace ssl {
00029 namespace openssl {
00030
00031 class OpenSSLContextSpi;
00032
00038 class DECAF_API OpenSSLSocketFactory : public decaf::net::ssl::SSLSocketFactory {
00039 private:
00040
00041 OpenSSLContextSpi* parent;
00042
00043 private:
00044
00045 OpenSSLSocketFactory( const OpenSSLSocketFactory& );
00046 OpenSSLSocketFactory& operator= ( const OpenSSLSocketFactory& );
00047
00048 public:
00049
00050 OpenSSLSocketFactory( OpenSSLContextSpi* parent );
00051
00052 virtual ~OpenSSLSocketFactory();
00053
00057 virtual decaf::net::Socket* createSocket();
00058
00062 virtual decaf::net::Socket* createSocket( const decaf::net::InetAddress* host, int port );
00063
00067 virtual decaf::net::Socket* createSocket( const decaf::net::InetAddress* host, int port,
00068 const decaf::net::InetAddress* ifAddress, int localPort );
00069
00073 virtual decaf::net::Socket* createSocket( const std::string& hostname, int port );
00074
00078 virtual decaf::net::Socket* createSocket( const std::string& name, int port,
00079 const decaf::net::InetAddress* ifAddress, int localPort );
00080
00084 virtual std::vector<std::string> getDefaultCipherSuites();
00085
00089 virtual std::vector<std::string> getSupportedCipherSuites();
00090
00094 virtual decaf::net::Socket* createSocket( decaf::net::Socket* socket, std::string host,
00095 int port, bool autoClose );
00096
00097 };
00098
00099 }}}}}
00100
00101 #endif