| /*========================================================================= |
| * Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved. |
| * This product is protected by U.S. and international copyright |
| * and intellectual property laws. Pivotal products are covered by |
| * one or more patents listed at http://www.pivotal.io/patents. |
| *========================================================================= |
| */ |
| #ifndef _SSLIMPL_HPP_INCLUDED_ |
| #define _SSLIMPL_HPP_INCLUDED_ |
| |
| #include "gf_base.hpp" |
| #include "ace/ACE.h" |
| #include "ace/OS.h" |
| #include <ace/INET_Addr.h> |
| #include <ace/SOCK_IO.h> |
| #include <ace/SSL/SSL_SOCK_Connector.h> |
| #include <ace/SSL/SSL_SOCK_Acceptor.h> |
| #include <ace/OS.h> |
| #include <ace/Recursive_Thread_Mutex.h> |
| #include "ace/Time_Value.h" |
| #include "GFSsl.hpp" |
| |
| |
| class SSLImpl: public GFSsl |
| { |
| private: |
| ACE_SSL_SOCK_Stream * m_io; |
| static ACE_Recursive_Thread_Mutex s_mutex; |
| volatile static bool s_initialized; |
| |
| public: |
| SSLImpl(ACE_SOCKET sock, const char * pubkeyfile, const char * privkeyfile, const char* password); |
| virtual ~SSLImpl(); |
| |
| int setOption(int, int, void*, int); |
| int listen(ACE_INET_Addr, unsigned); |
| int connect(ACE_INET_Addr, unsigned); |
| ssize_t recv(void*, size_t, const ACE_Time_Value*, size_t*); |
| ssize_t send(const void*, size_t, const ACE_Time_Value*, size_t*); |
| int getLocalAddr(ACE_Addr&); |
| void close(); |
| }; |
| |
| extern "C" { |
| CPPCACHE_EXPORT void * gf_create_SslImpl(ACE_SOCKET sock, const char * pubkeyfile, const char * privkeyfile, const char *pemPassword); |
| CPPCACHE_EXPORT void gf_destroy_SslImpl(void * impl); |
| } |
| |
| |
| #endif // _SSLIMPL_HPP_INCLUDED_ |