#include FTPThread::FTPThread(void) { mThreadHandler.setCallback(this,&FTPThread::threadHandler); insertHandler(&mThreadHandler); } FTPThread::FTPThread(const FTPThread &/*someFTPThread*/) { // private implementation } FTPThread::~FTPThread() { removeHandler(&mThreadHandler); mCompletionHandler=CallbackPointer(); } WORD FTPThread::interpretLine(const String &lineString) { String *pString=new String(lineString); ThreadMessage interpretMessage(ThreadMessage::TM_USER,MsgInterpretLine,(LONG)pString); return postMessage(interpretMessage); } WORD FTPThread::interpretFile(const String &pathFileName) { String *pString=new String(pathFileName); ThreadMessage interpretMessage(ThreadMessage::TM_USER,MsgInterpretFile,(LONG)pString); return postMessage(interpretMessage); } void FTPThread::setDisplay(Monitor &editMonitor) { FTPInterpreter::setDisplay(editMonitor); } DWORD FTPThread::threadHandler(ThreadMessage &someThreadMessage) { switch(someThreadMessage.message()) { case ThreadMessage::TM_CREATE : break; case ThreadMessage::TM_DESTROY : break; case ThreadMessage::TM_USER : if(MsgInterpretLine==someThreadMessage.userDataOne())handleInterpretLine((String*)someThreadMessage.userDataTwo()); else if(MsgInterpretFile==someThreadMessage.userDataOne())handleInterpretFile((String*)someThreadMessage.userDataTwo()); break; } return FALSE; } void FTPThread::handleInterpretLine(String *pInterpretLine) { CallbackData completionData(0,(int)LineComplete); String interpretLine(*pInterpretLine); delete pInterpretLine; FTPInterpreter::interpretLine(interpretLine); mCompletionHandler.callback(completionData); } void FTPThread::handleInterpretFile(String *pInterpretFile) { CallbackData completionData(0,(int)FileComplete); String interpretFile(*pInterpretFile); delete pInterpretFile; FTPInterpreter::interpretFile(interpretFile); mCompletionHandler.callback(completionData); }