Darwin-Streaming-Server/Server.tproj/QTSSCallbacks.h
Darren VanBuren 849723c9cf Add even more of the source
This should be about everything needed to build so far?
2017-03-07 17:14:16 -08:00

164 lines
8.3 KiB
C++

/*
*
* @APPLE_LICENSE_HEADER_START@
*
* Copyright (c) 1999-2008 Apple Inc. All Rights Reserved.
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*
*/
/*
File: QTSSCallbacks.h
Contains: All the QTSS callback functions
*/
#ifndef __QTSSCALLBACKS_H__
#define __QTSSCALLBACKS_H__
#include "QTSS.h"
class QTSSCallbacks
{
public:
// MEMORY ROUTINES
static void* QTSS_New(FourCharCode inMemoryIdentifier, UInt32 inSize);
static void QTSS_Delete(void* inMemory);
// TIME ROUTINES
static void QTSS_Milliseconds(SInt64* outMilliseconds);
static void QTSS_ConvertToUnixTime(SInt64* inQTSS_MilliSecondsPtr, time_t* outSecondsPtr);
// STARTUP ROUTINES
static QTSS_Error QTSS_AddRole(QTSS_Role inRole);
// DICTIONARY ROUTINES
// DICTIONARY LOCKING
static QTSS_Error QTSS_LockObject(QTSS_Object inDictionary);
static QTSS_Error QTSS_UnlockObject(QTSS_Object inDictionary);
// CREATE NEW OBJECT TYPE
static QTSS_Error QTSS_CreateObjectType(QTSS_ObjectType* outType);
// ADD ATTRIBUTE
static QTSS_Error QTSS_AddAttribute(QTSS_ObjectType inType, const char* inTag, void* inUnused);
static QTSS_Error QTSS_AddStaticAttribute(QTSS_ObjectType inObjectType, const char* inAttrName, void* inUnused, QTSS_AttrDataType inAttrDataType);
static QTSS_Error QTSS_AddInstanceAttribute(QTSS_Object inObject, const char* inAttrName, void* inUnused, QTSS_AttrDataType inAttrDataType);
// REMOVE ATTRIBUTE
static QTSS_Error QTSS_RemoveInstanceAttribute(QTSS_Object inObject, QTSS_AttributeID inID);
// ATTRIBUTE INFO
static QTSS_Error QTSS_IDForAttr(QTSS_ObjectType inType, const char* inTag, QTSS_AttributeID* outID);
static QTSS_Error QTSS_GetAttrInfoByName(QTSS_Object inObject, const char* inAttrName, QTSS_Object* outAttrInfoObject);
static QTSS_Error QTSS_GetAttrInfoByID(QTSS_Object inObject, QTSS_AttributeID inAttrID, QTSS_Object* outAttrInfoObject);
static QTSS_Error QTSS_GetAttrInfoByIndex(QTSS_Object inObject, UInt32 inIndex, QTSS_Object* outAttrInfoObject);
static QTSS_Error QTSS_GetNumAttributes(QTSS_Object inObject, UInt32* outNumValues);
// TYPE INFO & TYPE CONVERSIONS
static QTSS_Error QTSS_TypeToTypeString(const QTSS_AttrDataType inType, char** outTypeString);
static QTSS_Error QTSS_TypeStringToType( char* inTypeString, QTSS_AttrDataType* outType);
static QTSS_Error QTSS_StringToValue( char* inValueAsString, const QTSS_AttrDataType inType, void* ioBuffer, UInt32* ioBufSize);
static QTSS_Error QTSS_ValueToString( void* inValue, const UInt32 inValueLen, const QTSS_AttrDataType inType, char** outString);
// ATTRIBUTE VALUES
static QTSS_Error QTSS_GetValuePtr (QTSS_Object inDictionary, QTSS_AttributeID inID, UInt32 inIndex, void** outBuffer, UInt32* outLen);
static QTSS_Error QTSS_GetValue (QTSS_Object inDictionary, QTSS_AttributeID inID, UInt32 inIndex, void* ioBuffer, UInt32* ioLen);
static QTSS_Error QTSS_GetValueAsString (QTSS_Object inDictionary, QTSS_AttributeID inID, UInt32 inIndex, char** outString);
static QTSS_Error QTSS_SetValue (QTSS_Object inDictionary, QTSS_AttributeID inID, UInt32 inIndex, const void* inBuffer, UInt32 inLen);
static QTSS_Error QTSS_SetValuePtr (QTSS_Object inDictionary, QTSS_AttributeID inID, const void* inBuffer, UInt32 inLen);
static QTSS_Error QTSS_CreateObject (QTSS_Object inDictionary, QTSS_AttributeID inID, QTSS_ObjectType inType, UInt32* outIndex, QTSS_Object* outCreatedObject);
static QTSS_Error QTSS_GetNumValues (QTSS_Object inObject, QTSS_AttributeID inID, UInt32* outNumValues);
static QTSS_Error QTSS_RemoveValue (QTSS_Object inObject, QTSS_AttributeID inID, UInt32 inIndex);
// STREAM ROUTINES
static QTSS_Error QTSS_Write(QTSS_StreamRef inStream, void* inBuffer, UInt32 inLen, UInt32* outLenWritten, QTSS_WriteFlags inFlags);
static QTSS_Error QTSS_WriteV(QTSS_StreamRef inStream, iovec* inVec, UInt32 inNumVectors, UInt32 inTotalLength, UInt32* outLenWritten);
static QTSS_Error QTSS_Flush(QTSS_StreamRef inStream);
static QTSS_Error QTSS_Read(QTSS_StreamRef inRef, void* ioBuffer, UInt32 inBufLen, UInt32* outLengthRead);
static QTSS_Error QTSS_Seek(QTSS_StreamRef inRef, UInt64 inNewPosition);
static QTSS_Error QTSS_Advise(QTSS_StreamRef inRef, UInt64 inPosition, UInt32 inAdviseSize);
// FILE SYSTEM ROUTINES
static QTSS_Error QTSS_OpenFileObject(char* inPath, QTSS_OpenFileFlags inFlags, QTSS_Object* outFileObject);
static QTSS_Error QTSS_CloseFileObject(QTSS_Object inFileObject);
// SOCKET ROUTINES
static QTSS_Error QTSS_CreateStreamFromSocket(int inFileDesc, QTSS_StreamRef* outStream);
static QTSS_Error QTSS_DestroySocketStream(QTSS_StreamRef inStream);
// SERVICE ROUTINES
static QTSS_Error QTSS_AddService(const char* inServiceName, QTSS_ServiceFunctionPtr inFunctionPtr);
static QTSS_Error QTSS_IDForService(const char* inTag, QTSS_ServiceID* outID);
static QTSS_Error QTSS_DoService(QTSS_ServiceID inID, QTSS_ServiceFunctionArgsPtr inArgs);
// RTSP ROUTINES
static QTSS_Error QTSS_SendRTSPHeaders(QTSS_RTSPRequestObject inRef);
static QTSS_Error QTSS_AppendRTSPHeader(QTSS_RTSPRequestObject inRef, QTSS_RTSPHeader inHeader, char* inValue, UInt32 inValueLen);
static QTSS_Error QTSS_SendStandardRTSPResponse(QTSS_RTSPRequestObject inRTSPRequest, QTSS_Object inRTPInfo, UInt32 inFlags);
// RTP ROUTINES
static QTSS_Error QTSS_AddRTPStream(QTSS_ClientSessionObject inClientSession, QTSS_RTSPRequestObject inRTSPRequest, QTSS_RTPStreamObject* outStream, QTSS_AddStreamFlags inFlags);
static QTSS_Error QTSS_Play(QTSS_ClientSessionObject inClientSession, QTSS_RTSPRequestObject inRTSPRequest, QTSS_PlayFlags inPlayFlags);
static QTSS_Error QTSS_Pause(QTSS_ClientSessionObject inClientSession);
static QTSS_Error QTSS_Teardown(QTSS_ClientSessionObject inClientSession);
static QTSS_Error QTSS_RefreshTimeOut(QTSS_ClientSessionObject inClientSession);
// ASYNC I/O ROUTINES
static QTSS_Error QTSS_RequestEvent(QTSS_StreamRef inStream, QTSS_EventType inEventMask);
static QTSS_Error QTSS_SignalStream(QTSS_StreamRef inStream);
static QTSS_Error QTSS_SetIdleTimer(SInt64 inMsecToWait);
static QTSS_Error QTSS_SetIdleRoleTimer(SInt64 inMsecToWait);
static QTSS_Error QTSS_RequestLockedCallback();
static Bool16 QTSS_IsGlobalLocked();
static QTSS_Error QTSS_UnlockGlobalLock();
// AUTHENTICATION AND AUTHORIZATION ROUTINE
static QTSS_Error QTSS_Authenticate(const char* inAuthUserName, const char* inAuthResourceLocalPath, const char* inAuthMoviesDir, QTSS_ActionFlags inAuthRequestAction, QTSS_AuthScheme inAuthScheme, QTSS_RTSPRequestObject ioAuthRequestObject);
static QTSS_Error QTSS_Authorize(QTSS_RTSPRequestObject inAuthRequestObject, char** outAuthRealm, Bool16* outAuthUserAllowed);
static void QTSS_LockStdLib();
static void QTSS_UnlockStdLib();
private:
};
#endif //__QTSSCALLBACKS_H__