Initial
This commit is contained in:
62
smtp/SMTPTHRD.HPP
Normal file
62
smtp/SMTPTHRD.HPP
Normal 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
|
||||
Reference in New Issue
Block a user