mirror of
https://github.com/glest/glest-source.git
synced 2025-02-24 19:52:25 +01:00
- try to better handle socket disconnects
This commit is contained in:
parent
e319c2cf62
commit
a7f6a592ff
@ -101,6 +101,16 @@ void ConnectionSlotThread::purgeCompletedEvents() {
|
|||||||
safeMutex.ReleaseLock();
|
safeMutex.ReleaseLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ConnectionSlotThread::canShutdown(bool deleteSelfIfShutdownDelayed) {
|
||||||
|
bool ret = (getExecutingTask() == false);
|
||||||
|
if(ret == false && deleteSelfIfShutdownDelayed == true) {
|
||||||
|
setDeleteSelfOnExecutionDone(deleteSelfIfShutdownDelayed);
|
||||||
|
signalQuit();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
bool ConnectionSlotThread::isSignalCompleted(ConnectionSlotEvent *event) {
|
bool ConnectionSlotThread::isSignalCompleted(ConnectionSlotEvent *event) {
|
||||||
//SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] slotIndex = %d\n",__FILE__,__FUNCTION__,__LINE__,slotIndex);
|
//SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] slotIndex = %d\n",__FILE__,__FUNCTION__,__LINE__,slotIndex);
|
||||||
MutexSafeWrapper safeMutex(&triggerIdMutex);
|
MutexSafeWrapper safeMutex(&triggerIdMutex);
|
||||||
@ -161,6 +171,7 @@ void ConnectionSlotThread::execute() {
|
|||||||
safeMutex.ReleaseLock();
|
safeMutex.ReleaseLock();
|
||||||
|
|
||||||
if(event != NULL) {
|
if(event != NULL) {
|
||||||
|
ExecutingTaskSafeWrapper safeExecutingTaskMutex(this);
|
||||||
this->slotInterface->slotUpdateTask(event);
|
this->slotInterface->slotUpdateTask(event);
|
||||||
setTaskCompleted(event->eventId);
|
setTaskCompleted(event->eventId);
|
||||||
}
|
}
|
||||||
@ -459,9 +470,11 @@ void ConnectionSlot::update(bool checkForNewClients) {
|
|||||||
|
|
||||||
if(Config::getInstance().getBool("PlatformConsistencyChecks","true") &&
|
if(Config::getInstance().getBool("PlatformConsistencyChecks","true") &&
|
||||||
versionMatched == false) { // error message and disconnect only if checked
|
versionMatched == false) { // error message and disconnect only if checked
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] %s\n",__FILE__,__FUNCTION__,__LINE__,sErr.c_str());
|
||||||
//DisplayErrorMessage(sErr);
|
//DisplayErrorMessage(sErr);
|
||||||
//quit= true;
|
//quit= true;
|
||||||
close();
|
close();
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] %s\n",__FILE__,__FUNCTION__,__LINE__,sErr.c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -721,6 +734,15 @@ void ConnectionSlot::validateConnection() {
|
|||||||
void ConnectionSlot::close() {
|
void ConnectionSlot::close() {
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s LINE: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s LINE: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
|
if(BaseThread::shutdownAndWait(slotThreadWorker) == true) {
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
delete slotThreadWorker;
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
}
|
||||||
|
slotThreadWorker = NULL;
|
||||||
|
|
||||||
|
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
bool updateServerListener = (socket != NULL);
|
bool updateServerListener = (socket != NULL);
|
||||||
delete socket;
|
delete socket;
|
||||||
socket= NULL;
|
socket= NULL;
|
||||||
|
@ -81,6 +81,7 @@ protected:
|
|||||||
|
|
||||||
virtual void setQuitStatus(bool value);
|
virtual void setQuitStatus(bool value);
|
||||||
virtual void setTaskCompleted(int eventId);
|
virtual void setTaskCompleted(int eventId);
|
||||||
|
virtual bool canShutdown(bool deleteSelfIfShutdownDelayed=false);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ConnectionSlotThread(int slotIndex);
|
ConnectionSlotThread(int slotIndex);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user