Files
Work/ftp/FTPTHRD.CPP
2024-08-07 09:16:27 -04:00

71 lines
1.9 KiB
C++

#include <ftp/ftpthrd.hpp>
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<EditWindow> &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);
}