void shutdown(int exitCode) { if (areAlreadyShuttingDown) return; // in case we're called after receiving a RTCP "BYE" while in the middle of a "TEARDOWN". areAlreadyShuttingDown = True; shutdownExitCode = exitCode; if (env != NULL) { env->taskScheduler().unscheduleDelayedTask(sessionTimerTask); env->taskScheduler().unscheduleDelayedTask(arrivalCheckTimerTask); env->taskScheduler().unscheduleDelayedTask(interPacketGapCheckTimerTask); env->taskScheduler().unscheduleDelayedTask(qosMeasurementTimerTask); } if (qosMeasurementIntervalMS > 0) { printQOSData(exitCode); } // Teardown, then shutdown, any outstanding RTP/RTCP subsessions if (session != NULL) { tearDownSession(session, continueAfterTEARDOWN); } else { continueAfterTEARDOWN(NULL, 0, NULL); } }
void shutdown(int exitCode) { if (areAlreadyShuttingDown) return; // in case we're called after receiving a RTCP "BYE" while in the middle of a "TEARDOWN". areAlreadyShuttingDown = True; shutdownExitCode = exitCode; if (env != NULL) { env->taskScheduler().unscheduleDelayedTask(sessionTimerTask); env->taskScheduler().unscheduleDelayedTask(arrivalCheckTimerTask); env->taskScheduler().unscheduleDelayedTask(interPacketGapCheckTimerTask); env->taskScheduler().unscheduleDelayedTask(qosMeasurementTimerTask); } if (qosMeasurementIntervalMS > 0) { printQOSData(exitCode); } // Teardown, then shutdown, any outstanding RTP/RTCP subsessions Boolean shutdownImmediately = True; // by default if (session != NULL) { RTSPClient::responseHandler* responseHandlerForTEARDOWN = NULL; // unless: if (waitForResponseToTEARDOWN) { shutdownImmediately = False; responseHandlerForTEARDOWN = continueAfterTEARDOWN; } tearDownSession(session, responseHandlerForTEARDOWN); } if (shutdownImmediately) continueAfterTEARDOWN(NULL, 0, NULL); }
void shutdown(int exitCode) { shutdownExitCode = exitCode; if (env != NULL) { env->taskScheduler().unscheduleDelayedTask(sessionTimerTask); env->taskScheduler().unscheduleDelayedTask(arrivalCheckTimerTask); env->taskScheduler().unscheduleDelayedTask(interPacketGapCheckTimerTask); env->taskScheduler().unscheduleDelayedTask(qosMeasurementTimerTask); } if (qosMeasurementIntervalMS > 0) { printQOSData(exitCode); } // Teardown, then shutdown, any outstanding RTP/RTCP subsessions if (session != NULL) { tearDownSession(session, continueAfterTEARDOWN); } else { continueAfterTEARDOWN(NULL, 0, NULL); } }