QTSS_Error EasyRedisModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParamBlock) { switch (inRole) { case QTSS_Register_Role: return Register(&inParamBlock->regParams); case QTSS_Initialize_Role: return Initialize(&inParamBlock->initParams); case QTSS_RereadPrefs_Role: return RereadPrefs(); case QTSS_TTL_Role: return RedisTTL(); case QTSS_ChangeRtpNum_Role: return RedisChangeRtpNum(); case QTSS_AddPushName_Role: return RedisAddPushName(&inParamBlock->StreamNameParams); case QTSS_DelPushName_Role: return RedisDelPushName(&inParamBlock->StreamNameParams); case QTSS_GetAssociatedCMS_Role: return RedisGetAssociatedCMS(&inParamBlock->GetAssociatedCMSParams); case QTSS_JudgeStreamID_Role: return RedisJudgeStreamID(&inParamBlock->JudgeStreamIDParams); } return QTSS_NoErr; }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { // Setup module utils QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); sSessionMap = NEW OSRefTable(); sClientSessionMap = NEW OSRefTable(); parseDevice = NEW CParseDevice(); if (success != parseDevice->Init()) { qtss_printf("parseDevice Init fail\n"); } if (success != parseDevice->LoadDeviceXml(DEVICE_CONFIGFILE)) { qtss_printf("parseDevice LoadDeviceXml fail\n"); } sServerPrefs = inParams->inPrefs; sServer = inParams->inServer; sPrefs = QTSSModuleUtils::GetModulePrefsObject(inParams->inModule); // Call helper class initializers //ReflectorStream::Initialize(sPrefs); //ReflectorSession::Initialize(); // Report to the server that this module handles DESCRIBE, SETUP, PLAY, PAUSE, and TEARDOWN static QTSS_RTSPMethod sSupportedMethods[] = { qtssDescribeMethod, qtssSetupMethod, qtssTeardownMethod, qtssPlayMethod }; QTSSModuleUtils::SetupSupportedMethods(inParams->inServer, sSupportedMethods, 4); RereadPrefs(); return QTSS_NoErr; }
QTSS_Error QTSSFilePrivsModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParams) { switch (inRole) { case QTSS_Register_Role: return Register(&inParams->regParams); break; case QTSS_Initialize_Role: return Initialize(&inParams->initParams); break; case QTSS_RereadPrefs_Role: return RereadPrefs(); break; case QTSS_RTSPAuthorize_Role: return AuthenticateRTSPRequest(&inParams->rtspRequestParams); break; case QTSS_Shutdown_Role: return Shutdown(); break; } return QTSS_NoErr; }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); sServer = inParams->inServer; sServerPrefs = inParams->inPrefs; sPrefs = QTSSModuleUtils::GetModulePrefsObject(inParams->inModule); return RereadPrefs(); }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { // Setup module utils QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); sUserMutex = NEW OSMutex(); RereadPrefs(); return QTSS_NoErr; }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { // Setup module utils QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); sPrefs = QTSSModuleUtils::GetModulePrefsObject(inParams->inModule); sMutex = NEW OSMutex(); sHashTable = NEW IPAddrHashTable(277);//277 is prime, I think... RereadPrefs(); return QTSS_NoErr; }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { // Setup module utils QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); sPrefs = QTSSModuleUtils::GetModulePrefsObject(inParams->inModule); sServerPrefs = inParams->inPrefs; sAuthMutex = new OSMutex(); RereadPrefs(); return QTSS_NoErr; }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); sServer = inParams->inServer; sPrefs = QTSSModuleUtils::GetModulePrefsObject(inParams->inModule); sServerPrefs = inParams->inPrefs; RereadPrefs(); WriteStartupMessage(); sLogCheckTask = new LogCheckTask(); return QTSS_NoErr; }
QTSS_Error QTSSFlowControlModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParamBlock) { switch (inRole) { case QTSS_Register_Role: return Register(&inParamBlock->regParams); case QTSS_Initialize_Role: return Initialize(&inParamBlock->initParams); case QTSS_RereadPrefs_Role: return RereadPrefs(); case QTSS_RTCPProcess_Role: return ProcessRTCPPacket(&inParamBlock->rtcpProcessParams); } return QTSS_NoErr; }
QTSS_Error QTSSOnDemandRelayModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParams) { switch (inRole) { case QTSS_Register_Role: return Register(&inParams->regParams); case QTSS_Initialize_Role: return Initialize(&inParams->initParams); case QTSS_RereadPrefs_Role: return RereadPrefs(); case QTSS_RTSPPreProcessor_Role: return ProcessRTSPRequest(&inParams->rtspRequestParams); } return QTSS_NoErr; }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); sServer = inParams->inServer; sServerPrefs = inParams->inPrefs; modulePrefs = QTSSModuleUtils::GetModulePrefsObject(inParams->inModule); sRedisClient = new EasyRedisClient(); RereadPrefs(); RedisConnect(); return QTSS_NoErr; }
// Dispatch this module's role call back. QTSS_Error QTSSRefMovieModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParams) { switch (inRole) { case QTSS_Register_Role: return Register(&inParams->regParams); case QTSS_Initialize_Role: return Initialize(&inParams->initParams); case QTSS_RereadPrefs_Role: return RereadPrefs(); case QTSS_RTSPFilter_Role: return Filter(&inParams->rtspFilterParams); } return QTSS_NoErr; }
QTSS_Error EasyHLSModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParams) { switch (inRole) { case QTSS_Register_Role: return Register(&inParams->regParams); case QTSS_Initialize_Role: return Initialize(&inParams->initParams); case QTSS_RereadPrefs_Role: return RereadPrefs(); case Easy_HLSOpen_Role: //Start HLS Streaming return EasyHLSOpen(&inParams->easyHLSOpenParams); case Easy_HLSClose_Role: //Stop HLS Streaming return EasyHLSClose(&inParams->easyHLSCloseParams); } return QTSS_NoErr; }
QTSS_Error QTSSSpamDefenseModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParams) { switch (inRole) { case QTSS_Register_Role: return Register(&inParams->regParams); case QTSS_Initialize_Role: return Initialize(&inParams->initParams); case QTSS_RereadPrefs_Role: return RereadPrefs(); case QTSS_RTSPAuthorize_Role: return Authorize(&inParams->rtspAuthParams); case QTSS_RTSPSessionClosing_Role: return SessionClosing(&inParams->rtspSessionClosingParams); } return QTSS_NoErr; }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { // Setup module utils QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); sRelaySessionMap = NEW OSRefTable(); sServerPrefs = inParams->inPrefs; sServer = inParams->inServer; sPrefs = QTSSModuleUtils::GetModulePrefsObject(inParams->inModule); // Report to the server that this module handles DESCRIBE static QTSS_RTSPMethod sSupportedMethods[] = { qtssOptionsMethod, qtssDescribeMethod}; QTSSModuleUtils::SetupSupportedMethods(inParams->inServer, sSupportedMethods, 2); RereadPrefs(); return QTSS_NoErr; }
QTSS_Error QTSSRTPFileModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParamBlock) { switch (inRole) { case QTSS_Register_Role: return Register(&inParamBlock->regParams); case QTSS_Initialize_Role: return Initialize(&inParamBlock->initParams); case QTSS_RereadPrefs_Role: return RereadPrefs(); case QTSS_RTSPPreProcessor_Role: return ProcessRTSPRequest(&inParamBlock->rtspPreProcessorParams); case QTSS_RTPSendPackets_Role: return SendPackets(&inParamBlock->rtpSendPacketsParams); case QTSS_ClientSessionClosing_Role: return DestroySession(&inParamBlock->clientSessionClosingParams); } return QTSS_NoErr; }
QTSS_Error QTSSOnDemandRelayModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParams) { switch (inRole) { case QTSS_Register_Role: return Register(&inParams->regParams); case QTSS_Initialize_Role: return Initialize(&inParams->initParams); case QTSS_RereadPrefs_Role: return RereadPrefs(); case QTSS_RTSPPreProcessor_Role: return ProcessRTSPRequest(&inParams->rtspRequestParams); case QTSS_RTSPRelayingData_Role: return ProcessRelayRTPData(&inParams->rtspRelayingDataParams); case QTSS_ClientSessionClosing_Role: return DestroySession(&inParams->clientSessionClosingParams); } return QTSS_NoErr; }
// Handle the QTSS_Initialize role call back. QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { QTSS_Error err = QTSS_NoErr; UInt32 ulen = sizeof(sServerIPAddr); // Setup module utils QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); // Get prefs object sPrefs = QTSSModuleUtils::GetModulePrefsObject(inParams->inModule); sServerPrefs = inParams->inPrefs; sServer = inParams->inServer; // Get the Server's IP address for later use. err = QTSS_GetValue(sServer, qtssSvrDefaultIPAddr, 0, &sServerIPAddr, &ulen); err = RereadPrefs(); return err; }
QTSS_Error QTSSAdminModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParams) { switch (inRole) { case QTSS_Register_Role: return Register(&inParams->regParams); case QTSS_Initialize_Role: return Initialize(&inParams->initParams); case QTSS_RTSPFilter_Role: { if (!sEnableRemoteAdmin) break; return FilterRequest(&inParams->rtspFilterParams); } case QTSS_RTSPAuthorize_Role: return AuthorizeAdminRequest(inParams->rtspRequestParams.inRTSPRequest); case QTSS_RereadPrefs_Role: return RereadPrefs(); } return QTSS_NoErr; }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { // Setup module utils QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); // Get the server object sServer = inParams->inServer; // Get our prefs object sModule = inParams->inModule; sModulePrefs = QTSSModuleUtils::GetModulePrefsObject(sModule); // Set our version and description (void)QTSS_SetValue(sModule, qtssModDesc, 0, sDescription, ::strlen(sDescription)); (void)QTSS_SetValue(sModule, qtssModVersion, 0, &sVersion, sizeof(sVersion)); RereadPrefs(); return QTSS_NoErr; }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { // Setup module utils QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); // Setup global data structures sServerPrefs = inParams->inPrefs; sCheckingTask = NEW HLSSessionCheckingTask(); sServer = inParams->inServer; sModulePrefs = QTSSModuleUtils::GetModulePrefsObject(inParams->inModule); // Call helper class initializers EasyHLSSession::Initialize(sModulePrefs); RereadPrefs(); return QTSS_NoErr; }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { sAdminMutex = NEW OSMutex(); ElementNode_InitPtrArray(); // Setup module utils QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); sQTSSparams = *inParams; sServer = inParams->inServer; sModule = inParams->inModule; sModulePrefs = QTSSModuleUtils::GetModulePrefsObject(sModule); sServerPrefs = inParams->inPrefs; RereadPrefs(); //创建Mongoose线程、启动 sMongooseThread = NEW mongooseThread(); sMongooseThread->Start(); return QTSS_NoErr; }
QTSS_Error QTSSDSAuthModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParams) { switch (inRole) { case QTSS_Register_Role: return Register(); case QTSS_Initialize_Role: return Initialize(&inParams->initParams); case QTSS_RereadPrefs_Role: return RereadPrefs(); case QTSS_RTSPAuthenticate_Role: if (sAuthenticationEnabled) return AuthenticateRTSPRequest(&inParams->rtspAthnParams); case QTSS_RTSPAuthorize_Role: if (sAuthenticationEnabled) return Authorize(&inParams->rtspRequestParams); case QTSS_Shutdown_Role: return Shutdown(); } return QTSS_NoErr; }
QTSS_Error QTSSAccessLogModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParamBlock) { switch (inRole) { case QTSS_Register_Role: return Register(&inParamBlock->regParams); case QTSS_StateChange_Role: return StateChange(&inParamBlock->stateChangeParams); case QTSS_Initialize_Role: return Initialize(&inParamBlock->initParams); case QTSS_RereadPrefs_Role: return RereadPrefs(); case QTSS_RTSPPostProcessor_Role: return PostProcess(&inParamBlock->rtspPostProcessorParams); case QTSS_ClientSessionClosing_Role: return ClientSessionClosing(&inParamBlock->clientSessionClosingParams); case QTSS_Shutdown_Role: return Shutdown(); } return QTSS_NoErr; }
QTSS_Error EasyRedisModuleDispatch(QTSS_Role inRole, QTSS_RoleParamPtr inParamBlock) { switch (inRole) { case QTSS_Register_Role: return Register(&inParamBlock->regParams); case QTSS_Initialize_Role: return Initialize(&inParamBlock->initParams); case QTSS_RereadPrefs_Role: return RereadPrefs(); case Easy_RedisSetDevice_Role: return RedisSetDevice(&inParamBlock->DeviceInfoParams); case Easy_RedisDelDevice_Role: return RedisDelDevice(&inParamBlock->DeviceInfoParams); case Easy_RedisTTL_Role: return RedisTTL(); case Easy_RedisGetEasyDarwin_Role: return RedisGetAssociatedDarwin(&inParamBlock->GetAssociatedDarwinParams); default: break; } return QTSS_NoErr; }
QTSS_Error Initialize(QTSS_Initialize_Params* inParams) { QTSSModuleUtils::Initialize(inParams->inMessages, inParams->inServer, inParams->inErrorLogStream); // // We need some prefs created and maintained by the QTSSFileModule, // cuz we don't want to duplicate basically the same stuff StrPtrLen theFileModule("QTSSFileModule"); sFileModulePrefs = QTSSModuleUtils::GetModulePrefsObject(QTSSModuleUtils::GetModuleObjectByName(theFileModule)); static StrPtrLen sEHeader("\r\ne="); static StrPtrLen sUHeader("\r\nu="); static StrPtrLen sHTTP("http://"); static StrPtrLen sAdmin("admin@"); // Read our preferences RereadPrefs(); //build the sdp that looks like: \r\ne=http://streaming.apple.com\r\[email protected]\r\n. // Get the default DNS name of the server StrPtrLen theDefaultDNS; (void)QTSS_GetValuePtr(inParams->inServer, qtssSvrDefaultDNSName, 0, (void**)&theDefaultDNS.Ptr, &theDefaultDNS.Len); StrPtrLen sdpURL; StrPtrLen adminEmail; sdpURL.Ptr = QTSSModuleUtils::GetStringAttribute(sFileModulePrefs, "sdp_url", ""); sdpURL.Len = ::strlen(sdpURL.Ptr); adminEmail.Ptr = QTSSModuleUtils::GetStringAttribute(sFileModulePrefs, "admin_email", ""); adminEmail.Len = ::strlen(adminEmail.Ptr); UInt32 sdpURLLen = sdpURL.Len; UInt32 adminEmailLen = adminEmail.Len; if (sdpURLLen == 0) sdpURLLen = theDefaultDNS.Len + sHTTP.Len + 1; if (adminEmailLen == 0) adminEmailLen = theDefaultDNS.Len + sAdmin.Len; //calculate the length of the string & allocate memory sSDPHeader2.Len = (sEHeader.Len * 2) + sdpURLLen + adminEmailLen + 10; sSDPHeader2.Ptr = NEW char[sSDPHeader2.Len]; //write it! StringFormatter sdpFormatter(sSDPHeader2); sdpFormatter.Put(sUHeader); //if there are preferences for default URL & admin email, use those. Otherwise, build the //proper string based on default dns name. if (sdpURL.Len == 0) { sdpFormatter.Put(sHTTP); sdpFormatter.Put(theDefaultDNS); sdpFormatter.PutChar('/'); } else sdpFormatter.Put(sdpURL); sdpFormatter.Put(sEHeader); //now do the admin email. if (adminEmail.Len == 0) { sdpFormatter.Put(sAdmin); sdpFormatter.Put(theDefaultDNS); } else sdpFormatter.Put(adminEmail); sdpFormatter.PutEOL(); sSDPHeader2.Len = (UInt32)sdpFormatter.GetCurrentOffset(); delete [] sdpURL.Ptr; delete [] adminEmail.Ptr; // Report to the server that this module handles DESCRIBE, SETUP, PLAY, PAUSE, and TEARDOWN static QTSS_RTSPMethod sSupportedMethods[] = { qtssDescribeMethod, qtssSetupMethod, qtssTeardownMethod, qtssPlayMethod, qtssPauseMethod }; QTSSModuleUtils::SetupSupportedMethods(inParams->inServer, sSupportedMethods, 5); return QTSS_NoErr; }