This commit is contained in:
2024-08-07 09:16:27 -04:00
parent fdfadd5c7e
commit 5f971cf684
5200 changed files with 731717 additions and 0 deletions

62
smtp/SMTPTHRD.HPP Normal file
View File

@@ -0,0 +1,62 @@
#ifndef _SMTP_SMTPTHREAD_HPP_
#define _SMTP_SMTPTHREAD_HPP_
#ifndef _THREAD_MESSAGETHREAD_HPP_
#include <thread/mthread.hpp>
#endif
#ifndef _SMTP_SMTPCLIENT_HPP_
#include <smtp/smtp.hpp>
#endif
#ifndef _SOCKET_BLOCKHOOKER_HPP_
#include <socket/hooker.hpp>
#endif
class SMTPThread : private MessageThread, public SMTPClient
{
public:
enum HandlerType{MsgPreOpen,MsgOpen,MsgPostOpen};
SMTPThread(void);
SMTPThread(const SMTPThread &someSMTPThread);
virtual ~SMTPThread();
BOOL open(const String &serverName);
void insertHandler(ThreadCallbackPointer pThreadCallback,HandlerType typeHandler);
void removeHandler(HandlerType typeHandler);
void stop(void);
private:
enum {TimeOut=10000};
void handleOpen(String *pServerName);
DWORD callHandler(ThreadMessage &someThreadMessage,HandlerType typeHandler);
DWORD threadHandler(ThreadMessage &someThreadMessage);
CallbackData::ReturnType hookHandler(CallbackData &someCallbackData);
ThreadCallback<SMTPThread> mThreadHandler;
Array<ThreadCallbackPointer> mEventHandlers;
Callback<SMTPThread> mHookHandler;
BlockHooker mBlockHooker;
DWORD mStartTime;
DWORD mDeltaTime;
};
inline
void SMTPThread::insertHandler(ThreadCallbackPointer pThreadCallback,HandlerType typeHandler)
{
mEventHandlers[typeHandler]=ThreadCallbackPointer(pThreadCallback);
}
inline
void SMTPThread::removeHandler(HandlerType typeHandler)
{
mEventHandlers[typeHandler]=ThreadCallbackPointer();
}
inline
DWORD SMTPThread::callHandler(ThreadMessage &someThreadMessage,HandlerType typeHandler)
{
return mEventHandlers[typeHandler].callback(someThreadMessage);
}
inline
void SMTPThread::stop(void)
{
MessageThread::stop();
}
#endif