void QTSServer::DoInitRole() { QTSS_RoleParams theInitParams; theInitParams.initParams.inServer = this; theInitParams.initParams.inPrefs = fSrvrPrefs; theInitParams.initParams.inMessages = fSrvrMessages; theInitParams.initParams.inErrorLogStream = &sErrorLogStream; QTSS_ModuleState theModuleState; theModuleState.curRole = QTSS_Initialize_Role; theModuleState.curTask = NULL; OSThread::SetMainThreadData(&theModuleState); for (UInt32 x = 0; x < QTSServerInterface::GetNumModulesInRole(QTSSModule::kInitializeRole); x++) { QTSSModule* theModule = QTSServerInterface::GetModule(QTSSModule::kInitializeRole, x); theInitParams.initParams.inModule = theModule; theModuleState.curModule = theModule; QTSS_Error theErr = theModule->CallDispatch(QTSS_Initialize_Role, &theInitParams); if (theErr != QTSS_NoErr) { // If the module reports an error when initializing itself, // delete the module and pretend it was never there. QTSSModuleUtils::LogError(qtssWarningVerbosity, qtssMsgInitFailed, theErr, theModule->GetValue(qtssModName)->Ptr); sModuleQueue.Remove(theModule->GetQueueElem()); delete theModule; } } OSThread::SetMainThreadData(NULL); }
void QTSServer::DoInitRole() { QTSS_RoleParams theInitParams; theInitParams.initParams.inServer = this; theInitParams.initParams.inPrefs = fSrvrPrefs; theInitParams.initParams.inMessages = fSrvrMessages; theInitParams.initParams.inErrorLogStream = &sErrorLogStream; QTSS_ModuleState theModuleState; theModuleState.curRole = QTSS_Initialize_Role; theModuleState.curTask = NULL; OSThread::SetMainThreadData(&theModuleState); // // Add the OPTIONS method as the one method the server handles by default (it handles // it internally). Modules that handle other RTSP methods will add QTSS_RTSPMethod theOptionsMethod = qtssOptionsMethod; (void)this->SetValue(qtssSvrHandledMethods, 0, &theOptionsMethod, sizeof(theOptionsMethod)); // For now just disable the SetParameter to be compatible with Real. It should really be removed only for clients that have problems with their SetParameter implementations like (Real Players). // At the moment it isn't necesary to add the option. // QTSS_RTSPMethod theSetParameterMethod = qtssSetParameterMethod; // (void)this->SetValue(qtssSvrHandledMethods, 0, &theSetParameterMethod, sizeof(theSetParameterMethod)); for (UInt32 x = 0; x < QTSServerInterface::GetNumModulesInRole(QTSSModule::kInitializeRole); x++) { QTSSModule* theModule = QTSServerInterface::GetModule(QTSSModule::kInitializeRole, x); theInitParams.initParams.inModule = theModule; theModuleState.curModule = theModule; QTSS_Error theErr = theModule->CallDispatch(QTSS_Initialize_Role, &theInitParams); if (theErr != QTSS_NoErr) { // If the module reports an error when initializing itself, // delete the module and pretend it was never there. QTSSModuleUtils::LogError(qtssWarningVerbosity, qtssMsgInitFailed, theErr, theModule->GetValue(qtssModName)->Ptr); sModuleQueue.Remove(theModule->GetQueueElem()); delete theModule; } } OSThread::SetMainThreadData(NULL); }