최종완료보고 버전
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
#ifndef MULTIPLEX_SSL_SOCKET__H_
|
||||
#define MULTIPLEX_SSL_SOCKET__H_
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct ssl_ctx_st SSL_CTX;
|
||||
typedef struct ssl_st SSL;
|
||||
typedef struct bio_st BIO;
|
||||
|
||||
|
||||
class HMultiplexSslSocket : public HMultiplexTcpSocket
|
||||
{
|
||||
public:
|
||||
static SSL_CTX * m_sslCtxClient;
|
||||
static SSL_CTX * m_sslCtxServer;
|
||||
|
||||
static void SslInit(const char * pszCertPath, const char * pszKeyPath, const char * pszCaPath);
|
||||
static void SslDestroy();
|
||||
//
|
||||
|
||||
HMultiplexSslSocket();
|
||||
HMultiplexSslSocket(SOCKET sock, struct sockaddr_in * psaiRemote, HMpsDispatcher * pDispatcher);
|
||||
~HMultiplexSslSocket();
|
||||
|
||||
bool Close();
|
||||
|
||||
int Send(const char * pData, int nSize);
|
||||
int SendBufferedData();
|
||||
//int Receive(char * pBuffer, int nSize);
|
||||
int Receive();
|
||||
|
||||
bool SetRemoteAddressHostByName(const char * pszHostName, u_short nPort);
|
||||
bool IsRemain();
|
||||
|
||||
inline bool IsEncryptRetry() { return m_bEncryptRetry; }
|
||||
|
||||
virtual bool IsSslSocket() { return true; }
|
||||
|
||||
protected:
|
||||
enum {
|
||||
TIMER_CHANNEL_CLOSE = 100,
|
||||
TIMER_CHECK_RECEIVE = 101
|
||||
};
|
||||
|
||||
void OnConnect(bool bIsSuccess);
|
||||
virtual void OnConnectChild(bool bIsSuccess) {}
|
||||
|
||||
void OnAccepted();
|
||||
//virtual void OnAcceptedChild() {}
|
||||
|
||||
bool ProcHandShake();
|
||||
|
||||
protected:
|
||||
SSL_CTX * m_ssl_ctx;
|
||||
SSL * m_ssl;
|
||||
BIO * m_rbio;
|
||||
HStreamBuffer * m_pStreamBufferForDecrypt;
|
||||
BIO * m_wbio;
|
||||
HStreamBuffer * m_pStreamBufferForSend;
|
||||
|
||||
char * m_pBufferForRecv;
|
||||
|
||||
char m_szDstServerName[512];
|
||||
bool m_bIsSslConnecting; //...
|
||||
bool m_bEncryptRetry;
|
||||
};
|
||||
|
||||
#endif // MULTIPLEX_SSL_SOCKET__H_
|
||||
|
||||
Reference in New Issue
Block a user