Files
Work/remotepsapp/ConnectionThread.cpp
2024-08-07 09:16:27 -04:00

88 lines
2.0 KiB
C++

#include <remotepsapp/ConnectionThread.hpp>
ConnectionThread::ConnectionThread(void)
: mIsInConnect(false)
{
mThreadHandler.setCallback(this,&ConnectionThread::threadHandler);
insertHandler(&mThreadHandler);
}
ConnectionThread::ConnectionThread(const ConnectionThread &/*someConnectionThread*/)
{ // private implementation
}
ConnectionThread::~ConnectionThread()
{
removeHandler(&mThreadHandler);
if(mIsInConnect){mIsInConnect=false;fatalThreadExit();}
}
ConnectionThread &ConnectionThread::operator=(const ConnectionThread &someConnectionThread)
{ // private implementation
return *this;
}
void ConnectionThread::handleConnect(const String &serverName)
{
String *pComputerName=::new String(serverName);
ThreadMessage connectMessage(ThreadMessage::TM_USER,MsgConnect,(LONG)pComputerName);
mIsInConnect=true;
MessageThread::postMessage(connectMessage);
}
DWORD ConnectionThread::threadHandler(ThreadMessage &threadMessage)
{
switch(threadMessage.message())
{
case ThreadMessage::TM_CREATE :
break;
case ThreadMessage::TM_DESTROY :
break;
case ThreadMessage::TM_USER :
if(MsgConnect==threadMessage.userDataOne())
{
thConnect(*((String*)threadMessage.userDataTwo()));
mIsInConnect=false;
::delete (String*)threadMessage.userDataTwo();
}
break;
}
return FALSE;
}
void ConnectionThread::thConnect(const String &strServerName)
{
ComInitializer comInitializer;
mStrServerName=strServerName;
preConnect(strServerName);
if(!mRemoteProcessInfo.connect(strServerName))
{
mConnectionMutex.releaseMutex();
errorHandler();
return;
}
connectionHandler(mRemoteProcessInfo);
preDisconnect(strServerName);
mRemoteProcessInfo.disconnect();
mConnectionMutex.releaseMutex();
}
// ******* virtuals
void ConnectionThread::connectionHandler(RemoteProcessInfo &/*remoteProcessInfo*/)
{
}
void ConnectionThread::errorHandler(void)
{
}
void ConnectionThread::preConnect(const String &strServerName)
{
}
void ConnectionThread::preDisconnect(const String &strServerName)
{
}