QTSS_Error Register(QTSS_Register_Params* inParams) { // Do role & attribute setup (void)QTSS_AddRole(QTSS_Initialize_Role); (void)QTSS_AddRole(QTSS_Shutdown_Role); (void)QTSS_AddRole(QTSS_RTSPRequest_Role); (void)QTSS_AddRole(QTSS_ClientSessionClosing_Role); (void)QTSS_AddRole(QTSS_RTCPProcess_Role); // Tell the server our name! static char* sModuleName = "QTSSProxyModule"; ::strcpy(inParams->outModuleName, sModuleName); static char* sProxyClientInfoName = "QTSSProxyModuleProxyClientInfo"; (void)QTSS_AddStaticAttribute(qtssClientSessionObjectType, sProxyClientInfoName, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssClientSessionObjectType, sProxyClientInfoName, &sProxyClientInfoAttr); static char* sPortNumberToBigErrName = "QTSSProxyModulePortNumberTooBig"; static char* sRemoteHostRefusedConnectionErrName = "QTSSProxyModuleRemoteHostRefusedConnection"; static char* sNoTransportHeaderInSetupErrName = "QTSSProxyModuleNoTransportHeaderInSetup"; (void)QTSS_AddStaticAttribute(qtssTextMessagesObjectType, sPortNumberToBigErrName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssTextMessagesObjectType, sPortNumberToBigErrName, &sPortNumberTooBigErr); (void)QTSS_AddStaticAttribute(qtssTextMessagesObjectType, sRemoteHostRefusedConnectionErrName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssTextMessagesObjectType, sRemoteHostRefusedConnectionErrName, &sRemoteHostRefusedConnectionErr); (void)QTSS_AddStaticAttribute(qtssTextMessagesObjectType, sNoTransportHeaderInSetupErrName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssTextMessagesObjectType, sNoTransportHeaderInSetupErrName, &sNoTransportHeaderInSetupErr); return QTSS_NoErr; }
QTSS_Error Register(QTSS_Register_Params* inParams) { // The spam defense module has one preference, the number of connections // to allow per ip addr static char* sIsFirstRequestName = "QTSSSpamDefenseModuleIsFirstRequest"; // Add text messages attributes static char* sTooManyConnectionsName = "QTSSSpamDefenseModuleTooManyConnections"; // Do role & attribute setup (void)QTSS_AddRole(QTSS_Initialize_Role); (void)QTSS_AddRole(QTSS_RereadPrefs_Role); (void)QTSS_AddRole(QTSS_RTSPAuthorize_Role); (void)QTSS_AddRole(QTSS_RTSPSessionClosing_Role); (void)QTSS_AddStaticAttribute(qtssRTSPSessionObjectType, sIsFirstRequestName, NULL, qtssAttrDataTypeBool16); (void)QTSS_IDForAttr(qtssRTSPSessionObjectType, sIsFirstRequestName, &sIsFirstRequestAttr); (void)QTSS_AddStaticAttribute(qtssTextMessagesObjectType, sTooManyConnectionsName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssTextMessagesObjectType, sTooManyConnectionsName, &sTooManyConnectionsErr); // Tell the server our name! static char* sModuleName = "QTSSSpamDefenseModule"; ::strcpy(inParams->outModuleName, sModuleName); return QTSS_NoErr; }
QTSS_Error Register(QTSS_Register_Params* inParams) { // Do role setup (void)QTSS_AddRole(QTSS_Initialize_Role); (void)QTSS_AddRole(QTSS_RTCPProcess_Role); (void)QTSS_AddRole(QTSS_RereadPrefs_Role); // Add other attributes static char* sNumLossesAboveToleranceName = "QTSSFlowControlModuleLossAboveTol"; static char* sNumLossesBelowToleranceName = "QTSSFlowControlModuleLossBelowTol"; static char* sNumGettingWorsesName = "QTSSFlowControlModuleGettingWorses"; (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sNumLossesAboveToleranceName, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sNumLossesAboveToleranceName, &sNumLossesAboveTolAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sNumLossesBelowToleranceName, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sNumLossesBelowToleranceName, &sNumLossesBelowTolAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sNumGettingWorsesName, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sNumGettingWorsesName, &sNumWorsesAttr); // Tell the server our name! static char* sModuleName = "QTSSFlowControlModule"; ::strcpy(inParams->outModuleName, sModuleName); return QTSS_NoErr; }
QTSS_Error Register(QTSS_Register_Params* inParams) { (void)QTSS_AddRole(QTSS_RTSPPreProcessor_Role); static char* sStateName = "QTSSRawFileModuleState"; static char* sFileName = "QTSSRawFileModuleFile"; static char* sFileBufferName = "QTSSRawFileModuleFileBuffer"; static char* sReadOffsetName = "QTSSRawFileModuleReadOffset"; static char* sWriteOffsetName = "QTSSRawFileModuleWriteOffset"; (void)QTSS_AddStaticAttribute(qtssRTSPSessionObjectType, sStateName, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTSPSessionObjectType, sStateName, &sStateAttr); (void)QTSS_AddStaticAttribute(qtssRTSPSessionObjectType, sFileName, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTSPSessionObjectType, sFileName, &sFileAttr); (void)QTSS_AddStaticAttribute(qtssRTSPSessionObjectType, sFileBufferName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRTSPSessionObjectType, sFileBufferName, &sFileBufferAttr); (void)QTSS_AddStaticAttribute(qtssRTSPSessionObjectType, sReadOffsetName, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTSPSessionObjectType, sReadOffsetName, &sReadOffsetAttr); (void)QTSS_AddStaticAttribute(qtssRTSPSessionObjectType, sWriteOffsetName, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTSPSessionObjectType, sWriteOffsetName, &sWriteOffsetAttr); // Tell the server our name! static char* sModuleName = "QTSSRawFileModule"; ::strcpy(inParams->outModuleName, sModuleName); return QTSS_NoErr; }
QTSS_Error Register(QTSS_Register_Params* inParams) { // Do attribute setup static char* sCantRegisterName = "QTSSvrControlModuleCantRegisterMachPort"; static char* sCantAllocateName = "QTSSvrControlModuleCantAllocateMachPort"; static char* sFatalName = "QTSSvrControlModuleServerControlFatalErr"; (void)QTSS_AddStaticAttribute(qtssTextMessagesObjectType, sCantRegisterName, NULL, qtssAttrDataTypeCharArray, qtssAttrModeRead | qtssAttrModePreempSafe); (void)QTSS_IDForAttr(qtssTextMessagesObjectType, sCantRegisterName, &sCantRegisterErr); (void)QTSS_AddStaticAttribute(qtssTextMessagesObjectType, sCantAllocateName, NULL, qtssAttrDataTypeCharArray, qtssAttrModeRead | qtssAttrModePreempSafe); (void)QTSS_IDForAttr(qtssTextMessagesObjectType, sCantAllocateName, &sCantAllocateErr); (void)QTSS_AddStaticAttribute(qtssTextMessagesObjectType, sFatalName, NULL, qtssAttrDataTypeCharArray, qtssAttrModeRead | qtssAttrModePreempSafe); (void)QTSS_IDForAttr(qtssTextMessagesObjectType, sFatalName, &sFatalErr); // Add roles (void)QTSS_AddRole(QTSS_Initialize_Role); (void)QTSS_AddRole(QTSS_Shutdown_Role); // Tell the server our name! static char* sModuleName = "QTSSvrControlModule"; ::strcpy(inParams->outModuleName, sModuleName); return QTSS_NoErr; }
QTSS_Error Register(QTSS_Register_Params* inParams) { sLogMutex = new OSMutex(); // Do role & service setup (void)QTSS_AddRole(QTSS_Initialize_Role); (void)QTSS_AddRole(QTSS_RTSPPostProcessor_Role); (void)QTSS_AddRole(QTSS_ClientSessionClosing_Role); (void)QTSS_AddRole(QTSS_RereadPrefs_Role); (void)QTSS_AddRole(QTSS_Shutdown_Role); (void)QTSS_AddRole(QTSS_StateChange_Role); (void)QTSS_AddService("RollAccessLog", &RollAccessLog); // Tell the server our name! static char* sModuleName = "QTSSAccessLogModule"; ::strcpy(inParams->outModuleName, sModuleName); static char* sLoggedAuthorizationName = "QTSSAccessLogModuleLoggedAuthorization"; (void)QTSS_AddStaticAttribute(qtssClientSessionObjectType, sLoggedAuthorizationName, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssClientSessionObjectType, sLoggedAuthorizationName, &sLoggedAuthorizationAttrID); return QTSS_NoErr; }
QTSS_Error Register(QTSS_Register_Params* inParams) { // Do role & attribute setup (void)QTSS_AddRole(QTSS_Initialize_Role); (void)QTSS_AddRole(QTSS_RTSPFilter_Role); (void)QTSS_AddRole(QTSS_RereadPrefs_Role); (void)QTSS_AddRole(QTSS_RTSPAuthorize_Role); (void)QTSS_AddStaticAttribute(qtssRTSPRequestObjectType, sFlushingName, NULL, qtssAttrDataTypeBool16); (void)QTSS_IDForAttr(qtssRTSPRequestObjectType, sFlushingName, &sFlushingID); (void)QTSS_AddStaticAttribute(qtssRTSPRequestObjectType, sAuthenticatedName, NULL, qtssAttrDataTypeBool16); (void)QTSS_IDForAttr(qtssRTSPRequestObjectType, sAuthenticatedName, &sAuthenticatedID); // Tell the server our name! static char* sModuleName = "QTSSAdminModule"; ::strcpy(inParams->outModuleName, sModuleName); return QTSS_NoErr; }
QTSS_Error Register(QTSS_Register_Params* inParams) { // Register for roles (void)QTSS_AddRole(QTSS_Initialize_Role); (void)QTSS_AddRole(QTSS_RTSPPreProcessor_Role); (void)QTSS_AddRole(QTSS_ClientSessionClosing_Role); (void)QTSS_AddRole(QTSS_RereadPrefs_Role); // Add text messages attributes static char* sSeekToNonexistentTimeName = "QTSSFileModuleSeekToNonExistentTime"; static char* sBadQTFileName = "QTSSFileModuleBadQTFile"; static char* sExpectedDigitFilenameName = "QTSSFileModuleExpectedDigitFilename"; static char* sTrackDoesntExistName = "QTSSFileModuleTrackDoesntExist"; (void)QTSS_AddStaticAttribute(qtssTextMessagesObjectType, sSeekToNonexistentTimeName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssTextMessagesObjectType, sSeekToNonexistentTimeName, &sSeekToNonexistentTimeErr); (void)QTSS_AddStaticAttribute(qtssTextMessagesObjectType, sBadQTFileName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssTextMessagesObjectType, sBadQTFileName, &sBadQTFileErr); (void)QTSS_AddStaticAttribute(qtssTextMessagesObjectType, sExpectedDigitFilenameName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssTextMessagesObjectType, sExpectedDigitFilenameName, &sExpectedDigitFilenameErr); (void)QTSS_AddStaticAttribute(qtssTextMessagesObjectType, sTrackDoesntExistName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssTextMessagesObjectType, sTrackDoesntExistName, &sTrackDoesntExistErr); // Add an RTP session attribute for tracking FileSession objects static char* sFileSessionName = "QTSSRTPFileModuleSession"; (void)QTSS_AddStaticAttribute(qtssClientSessionObjectType, sFileSessionName, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssClientSessionObjectType, sFileSessionName, &sFileSessionAttr); // Tell the server our name! static char* sModuleName = "QTSSRTPFileModule"; ::strcpy(inParams->outModuleName, sModuleName); return QTSS_NoErr; }
QTSS_Error Register(QTSS_Register_Params* inParams) { // Do role & attribute setup (void)QTSS_AddRole(QTSS_Initialize_Role); // Only open needs to be registered for, the rest happen naturally (void)QTSS_AddRole(QTSS_OpenFile_Role); // Add an attribute to the file object type to store a pointer to our OSFileSource static char* sOSFileSourceName = "QTSSPosixFileSysModuleOSFileSource"; (void)QTSS_AddStaticAttribute(qtssFileObjectType, sOSFileSourceName, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssFileObjectType, sOSFileSourceName, &sOSFileSourceAttr); static char* sEventContextName = "QTSSPosixFileSysModuleEventContext"; (void)QTSS_AddStaticAttribute(qtssFileObjectType, sEventContextName, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssFileObjectType, sEventContextName, &sEventContextAttr); // Tell the server our name! static char* sModuleName = "QTSSPosixFileSysModule"; ::strcpy(inParams->outModuleName, sModuleName); return QTSS_NoErr; }
QTSS_Error Register(QTSS_Register_Params* inParams) { // Do role & attribute setup (void)QTSS_AddRole(QTSS_Initialize_Role); (void)QTSS_AddRole(QTSS_RTSPPreProcessor_Role); (void)QTSS_AddRole(QTSS_ClientSessionClosing_Role); (void)QTSS_AddRole(QTSS_RTSPRelayingData_Role); // call me with interleaved RTP streams on the RTSP session (void)QTSS_AddRole(QTSS_RereadPrefs_Role); // Add an RTP session attribute for tracking ReflectorSession objects static char* sOutputName = "QTSSOnDemandRelayModuleOutput"; static char* sSessionName = "QTSSOnDemandRelayModuleSession"; static char* sStreamCookieName = "QTSSOnDemandRelayModuleStreamCookie"; static char* sRequestBufferName = "QTSSOnDemandRelayModuleRequestBuffer"; static char* sRequestBufferLenName= "QTSSOnDemandRelayModuleRequestBufferLen"; static char* sBroadcasterSessionName= "QTSSOnDemandRelayModuleBroadcasterSession"; (void)QTSS_AddStaticAttribute(qtssClientSessionObjectType, sOutputName, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssClientSessionObjectType, sOutputName, &sOutputAttr); (void)QTSS_AddStaticAttribute(qtssClientSessionObjectType, sSessionName, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssClientSessionObjectType, sSessionName, &sSessionAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sStreamCookieName, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sStreamCookieName, &sStreamCookieAttr); (void)QTSS_AddStaticAttribute(qtssRTSPRequestObjectType, sRequestBufferName, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssRTSPRequestObjectType, sRequestBufferName, &sRequestBodyAttr); (void)QTSS_AddStaticAttribute(qtssRTSPRequestObjectType, sRequestBufferLenName, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTSPRequestObjectType, sRequestBufferLenName, &sBufferOffsetAttr); (void)QTSS_AddStaticAttribute(qtssClientSessionObjectType, sBroadcasterSessionName, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssClientSessionObjectType, sBroadcasterSessionName, &sClientBroadcastSessionAttr); // keep the same attribute name for the RTSPSessionObject as used int he ClientSessionObject (void)QTSS_AddStaticAttribute(qtssRTSPSessionObjectType, sBroadcasterSessionName, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssRTSPSessionObjectType, sBroadcasterSessionName, &sRTSPBroadcastSessionAttr); // Reflector session needs to setup some parameters too. ReflectorStream::Register(); // RTPSessionOutput needs to do the same RTPSessionOutput::Register(); // Tell the server our name! static char* sModuleName = "QTSSOnDemandRelayModule"; ::strcpy(inParams->outModuleName, sModuleName); return QTSS_NoErr; }
void RelaySession::Register() { qtssRelaySessionObjectType = 0; // create relay session object type (void)QTSS_CreateObjectType(&qtssRelaySessionObjectType); // Add the static attributes to the qtssRelaySessionObjectType object (void)QTSS_AddStaticAttribute(qtssRelaySessionObjectType, sRelayNameName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRelaySessionObjectType, sRelayNameName, &sRelayName); // relay name (void)QTSS_AddStaticAttribute(qtssRelaySessionObjectType, sSourceTypeName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRelaySessionObjectType, sSourceTypeName, &sSourceType); // source type (void)QTSS_AddStaticAttribute(qtssRelaySessionObjectType, sSourceIPAddrName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRelaySessionObjectType, sSourceIPAddrName, &sSourceIPAddr); // source addr (void)QTSS_AddStaticAttribute(qtssRelaySessionObjectType, sSourceInIPAddrName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRelaySessionObjectType, sSourceInIPAddrName, &sSourceInIPAddr); // interface addr (void)QTSS_AddStaticAttribute(qtssRelaySessionObjectType, sSourceUDPPortsName, NULL, qtssAttrDataTypeUInt16); (void)QTSS_IDForAttr(qtssRelaySessionObjectType, sSourceUDPPortsName, &sSourceUDPPorts); // udp ports (void)QTSS_AddStaticAttribute(qtssRelaySessionObjectType, sSourceRTSPPortName, NULL, qtssAttrDataTypeUInt16); (void)QTSS_IDForAttr(qtssRelaySessionObjectType, sSourceRTSPPortName, &sSourceRTSPPort); // rtsp port (void)QTSS_AddStaticAttribute(qtssRelaySessionObjectType, sSourceURLName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRelaySessionObjectType, sSourceURLName, &sSourceURL); // url (void)QTSS_AddStaticAttribute(qtssRelaySessionObjectType, sSourceUsernameName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRelaySessionObjectType, sSourceUsernameName, &sSourceUsername); // username (void)QTSS_AddStaticAttribute(qtssRelaySessionObjectType, sSourcePasswordName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRelaySessionObjectType, sSourcePasswordName, &sSourcePassword); // password (void)QTSS_AddStaticAttribute(qtssRelaySessionObjectType, sSourceTTLName, NULL, qtssAttrDataTypeUInt16); (void)QTSS_IDForAttr(qtssRelaySessionObjectType, sSourceTTLName, &sSourceTTL); // ttl (void)QTSS_AddStaticAttribute(qtssRelaySessionObjectType, sRelayOutputObjectName, NULL, qtssAttrDataTypeQTSS_Object); (void)QTSS_IDForAttr(qtssRelaySessionObjectType, sRelayOutputObjectName, &sRelayOutputObject); // relay output //char* strEnd = NULL; char* relayStr = "QTSS_Relay/"; //kVersionString is changed now -- it doesn't contain any spaces or the build number //strEnd = strchr(kVersionString, ' '); //Assert(strEnd != NULL); #ifndef __Win32__ //qtss_snprintf(sRelayUserAgent, ::strlen(relayStr) + (strEnd - kVersionString) + 1, "%s/%s", relayStr, kVersionString); qtss_snprintf(sRelayUserAgent, ::strlen(relayStr) + ::strlen(kVersionString) + 1, "%s%s", relayStr, kVersionString); #else //_snprintf(sRelayUserAgent, ::strlen(relayStr) + (strEnd - kVersionString) + 1, "%s/%s", relayStr, kVersionString); _snprintf(sRelayUserAgent, ::strlen(relayStr) + ::strlen(kVersionString) + 1, "%s%s", relayStr, kVersionString); #endif }
void RTPSessionOutput::Register() { // Add some attributes to QTSS_RTPStream dictionary static char* sNextSeqNum = "qtssNextSeqNum"; static char* sSeqNumOffset = "qtssSeqNumOffset"; static char* sLastQualityChange = "qtssLastQualityChange"; static char* sLastRTPPacketID = "qtssReflectorStreamLastRTPPacketID"; static char* sLastRTCPPacketID = "qtssReflectorStreamLastRTCPPacketID"; static char* sFirstRTCPArrivalTime = "qtssReflectorStreamStartRTCPArrivalTime"; static char* sFirstRTCPTimeStamp = "qtssReflectorStreamStartRTCPTimeStamp"; static char* sFirstRTCPCurrentTime = "qtssReflectorStreamStartRTCPCurrent"; static char* sFirstRTPArrivalTime = "qtssReflectorStreamStartRTPArrivalTime"; static char* sFirstRTPTimeStamp = "qtssReflectorStreamStartRTPTimeStamp"; static char* sFirstRTPCurrentTime = "qtssReflectorStreamStartRTPCurrent"; static char* sBaseRTPTimeStamp = "qtssReflectorStreamBaseRTPTimeStamp"; static char* sBaseArrivalTimeStamp = "qtssReflectorStreamBaseArrivalTime"; static char* sLastRTPTimeStamp = "qtssReflectorStreamLastRTPTimeStamp"; static char* sLastRTCPTransmit = "qtssReflectorStreamLastRTCPTransmit"; static char* sStreamSSRC = "qtssReflectorStreamSSRC"; static char* sStreamPacketCount = "qtssReflectorStreamPacketCount"; static char* sStreamByteCount = "qtssReflectorStreamByteCount"; (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sLastRTCPTransmit, NULL, qtssAttrDataTypeUInt16); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sLastRTCPTransmit, &sLastRTCPTransmitAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sNextSeqNum, NULL, qtssAttrDataTypeUInt16); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sNextSeqNum, &sNextSeqNumAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sSeqNumOffset, NULL, qtssAttrDataTypeUInt16); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sSeqNumOffset, &sSeqNumOffsetAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sLastQualityChange, NULL, qtssAttrDataTypeSInt64); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sLastQualityChange, &sLastQualityChangeAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sLastRTPPacketID, NULL, qtssAttrDataTypeUInt64); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sLastRTPPacketID, &sLastRTPPacketIDAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sLastRTCPPacketID, NULL, qtssAttrDataTypeUInt64); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sLastRTCPPacketID, &sLastRTCPPacketIDAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sLastRTPTimeStamp, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sLastRTPTimeStamp, &sLastRTPTimeStampAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sFirstRTCPArrivalTime, NULL, qtssAttrDataTypeSInt64); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sFirstRTCPArrivalTime, &sFirstRTCPArrivalTimeAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sFirstRTCPTimeStamp, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sFirstRTCPTimeStamp, &sFirstRTCPTimeStampAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sFirstRTCPCurrentTime, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sFirstRTCPCurrentTime, &sFirstRTCPCurrentTimeAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sFirstRTPCurrentTime, NULL, qtssAttrDataTypeSInt64); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sFirstRTPCurrentTime, &sFirstRTPCurrentTimeAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sFirstRTPArrivalTime, NULL, qtssAttrDataTypeSInt64); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sFirstRTPArrivalTime, &sFirstRTPArrivalTimeAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sFirstRTPTimeStamp, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sFirstRTPTimeStamp, &sFirstRTPTimeStampAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sBaseRTPTimeStamp, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sBaseRTPTimeStamp, &sBaseRTPTimeStampAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sBaseArrivalTimeStamp, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sBaseArrivalTimeStamp, &sBaseArrivalTimeStampAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sStreamSSRC, NULL, qtssAttrDataTypeVoidPointer); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sStreamSSRC, &sStreamSSRCAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sStreamPacketCount, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sStreamPacketCount, &sStreamPacketCountAttr); (void)QTSS_AddStaticAttribute(qtssRTPStreamObjectType, sStreamByteCount, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRTPStreamObjectType, sStreamByteCount, &sStreamByteCountAttr); }
void RelayOutput::Register() { // Create the relay output object type (void)QTSS_CreateObjectType(&qtssRelayOutputObjectType); // Add the static attributes to the qtssRelayOutputObjectType object (void)QTSS_AddStaticAttribute(qtssRelayOutputObjectType, sOutputTypeName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRelayOutputObjectType, sOutputTypeName, &sOutputType); // dest type (void)QTSS_AddStaticAttribute(qtssRelayOutputObjectType, sOutputDestAddrName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRelayOutputObjectType, sOutputDestAddrName, &sOutputDestAddr); // dest addr (void)QTSS_AddStaticAttribute(qtssRelayOutputObjectType, sOutputLocalAddrName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRelayOutputObjectType, sOutputLocalAddrName, &sOutputLocalAddr); // interface addr (void)QTSS_AddStaticAttribute(qtssRelayOutputObjectType, sOutputUDPPortsName, NULL, qtssAttrDataTypeUInt16); (void)QTSS_IDForAttr(qtssRelayOutputObjectType, sOutputUDPPortsName, &sOutputUDPPorts); // udp ports (void)QTSS_AddStaticAttribute(qtssRelayOutputObjectType, sOutputRTSPPortName, NULL, qtssAttrDataTypeUInt16); (void)QTSS_IDForAttr(qtssRelayOutputObjectType, sOutputRTSPPortName, &sOutputRTSPPort); // rtsp port (void)QTSS_AddStaticAttribute(qtssRelayOutputObjectType, sOutputURLName, NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRelayOutputObjectType, sOutputURLName, &sOutputURL); // url (void)QTSS_AddStaticAttribute(qtssRelayOutputObjectType, sOutputTTLName, NULL, qtssAttrDataTypeUInt16); (void)QTSS_IDForAttr(qtssRelayOutputObjectType, sOutputTTLName, &sOutputTTL); // ttl (void)QTSS_AddStaticAttribute(qtssRelayOutputObjectType, sOutputCurPacketsPerSecName, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRelayOutputObjectType, sOutputCurPacketsPerSecName, &sOutputCurPacketsPerSec);// cur packets/sec (void)QTSS_AddStaticAttribute(qtssRelayOutputObjectType, sOutputCurBitsPerSecName, NULL, qtssAttrDataTypeUInt32); (void)QTSS_IDForAttr(qtssRelayOutputObjectType, sOutputCurBitsPerSecName, &sOutputCurBitsPerSec); // cur bits/sec (void)QTSS_AddStaticAttribute(qtssRelayOutputObjectType, sOutputTotalPacketsSentName, NULL, qtssAttrDataTypeUInt64); (void)QTSS_IDForAttr(qtssRelayOutputObjectType, sOutputTotalPacketsSentName, &sOutputTotalPacketsSent);// total packets (void)QTSS_AddStaticAttribute(qtssRelayOutputObjectType, sOutputTotalBytesSentName, NULL, qtssAttrDataTypeUInt64); (void)QTSS_IDForAttr(qtssRelayOutputObjectType, sOutputTotalBytesSentName, &sOutputTotalBytesSent); // total bytes }
QTSS_Error Register() { QTSS_Error theErr; // Do role & attribute setup // for when the server starts theErr = QTSS_AddRole(QTSS_Initialize_Role); //PrintQTSSError("QTSSIcecastAuthModule::Register", "register for initialize role", theErr); // for when asked to re-read the prefs file qtss_printf("QTSSIcecastAuthModule::Register about to register for reread prefs role\n"); (void)QTSS_AddRole(QTSS_RereadPrefs_Role); qtss_printf("QTSSIcecastAuthModule::Register after register for reread prefs role, about to register for filter\n"); // can't find doc on these - apparently deprecated as of v3?? //(void)QTSS_AddRole(QTSS_RTSPAuthenticate_Role); //(void)QTSS_AddRole(QTSS_RTSPAuthorize_Role); // the earliest call on a RTSP request - needed to get the full query including // query params. (void)QTSS_AddRole(QTSS_RTSPFilter_Role); // called to pre-process a RTSP request - has full client info, including timestamp // for completely unique session ID's (rather then the increment) (void)QTSS_AddRole(QTSS_RTSPPreProcessor_Role); // the shutdown role, for cleanup stuff (void)QTSS_AddRole(QTSS_Shutdown_Role); // The client close role, to send the end message (void)QTSS_AddRole(QTSS_ClientSessionClosing_Role); qtss_printf("QTSSIcecastAuthModule::Register all roles registered, about to register attributes\n"); // add the attribute to hold the username when provided (void)QTSS_AddStaticAttribute(qtssRTSPSessionObjectType, "ProvidedUsername", NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRTSPSessionObjectType, "ProvidedUsername", &attrRtspSessionProvidedUsername); // add the attribute to hold the username when provided (void)QTSS_AddStaticAttribute(qtssRTSPSessionObjectType, "ProvidedPassword", NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssRTSPSessionObjectType, "ProvidedPassword", &attrRtspSessionProvidedPassword); // add the attribute that holds the flag to show if the session has been authenticated // we check this first, if the session is authenticated we can skip everything theErr = QTSS_AddStaticAttribute(qtssRTSPSessionObjectType, "SessionAuthenticated", NULL, qtssAttrDataTypeBool16); //PrintQTSSError("QTSSIcecastAuthModule::Register", "add session authenticated attribute to rtsp session", theErr); theErr = QTSS_IDForAttr(qtssRTSPSessionObjectType, "SessionAuthenticated", &attrRtspSessionAuthenticated); //PrintQTSSError("QTSSIcecastAuthModule::Register", "get ID for session authenticated attribute on rtsp session", theErr); // add to hold the 'full' session ID on the RTSP Session (start time millis CONCAT sever session id, to ensure uniqueness) (void)QTSS_AddStaticAttribute(qtssClientSessionObjectType, "FullSessionID", NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssClientSessionObjectType, "FullSessionID", &attrClientSessionFullSessionID); // the mount point needs to be stashed in the client session, for reporting on teardown (void)QTSS_AddStaticAttribute(qtssClientSessionObjectType, "MountPoint", NULL, qtssAttrDataTypeCharArray); (void)QTSS_IDForAttr(qtssClientSessionObjectType, "MountPoint", &attrClientSessionMountPoint); qtss_printf("QTSSIcecastAuthModule::Register end of method\n"); return QTSS_NoErr; // need to return. should do something with any errors captured above. }