Darwin-Streaming-Server/APIStubLib/QTSS_Private.h

159 lines
5.3 KiB
C
Raw Permalink Normal View History

/*
*
* @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: QTSS_Private.h
Contains: Implementation-specific structures and typedefs used by the
implementation of QTSS API in the Darwin Streaming Server
*/
#ifndef QTSS_PRIVATE_H
#define QTSS_PRIVATE_H
#ifdef __cplusplus
extern "C" {
#endif
#include "OSHeaders.h"
#include "QTSS.h"
class QTSSModule;
class Task;
typedef QTSS_Error (*QTSS_CallbackProcPtr)(...);
typedef void* (*QTSS_CallbackPtrProcPtr)(...);
enum
{
// Indexes for each callback routine. Addresses of the callback routines get
// placed in an array.
// IMPORTANT: When adding new callbacks, add only to the end of the list and increment the
// kLastCallback value. Inserting or changing the index order will break dynamic modules
// built with another release.
kNewCallback = 0,
kDeleteCallback = 1,
kMillisecondsCallback = 2,
kConvertToUnixTimeCallback = 3,
kAddRoleCallback = 4,
kAddAttributeCallback = 5,
kIDForTagCallback = 6,
kGetAttributePtrByIDCallback = 7,
kGetAttributeByIDCallback = 8,
kSetAttributeByIDCallback = 9,
kWriteCallback = 10,
kWriteVCallback = 11,
kFlushCallback = 12,
kAddServiceCallback = 13,
kIDForServiceCallback = 14,
kDoServiceCallback = 15,
kSendRTSPHeadersCallback = 16,
kAppendRTSPHeadersCallback = 17,
kSendStandardRTSPCallback = 18,
kAddRTPStreamCallback = 19,
kPlayCallback = 20,
kPauseCallback = 21,
kTeardownCallback = 22,
kRequestEventCallback = 23,
kSetIdleTimerCallback = 24,
kOpenFileObjectCallback = 25,
kCloseFileObjectCallback = 26,
kReadCallback = 27,
kSeekCallback = 28,
kAdviseCallback = 29,
kGetNumValuesCallback = 30,
kGetNumAttributesCallback = 31,
kSignalStreamCallback = 32,
kCreateSocketStreamCallback = 33,
kDestroySocketStreamCallback = 34,
kAddStaticAttributeCallback = 35,
kAddInstanceAttributeCallback = 36,
kRemoveInstanceAttributeCallback= 37,
kGetAttrInfoByIndexCallback = 38,
kGetAttrInfoByNameCallback = 39,
kGetAttrInfoByIDCallback = 40,
kGetValueAsStringCallback = 41,
kTypeToTypeStringCallback = 42,
kTypeStringToTypeCallback = 43,
kStringToValueCallback = 44,
kValueToStringCallback = 45,
kRemoveValueCallback = 46,
kRequestGlobalLockCallback = 47,
kIsGlobalLockedCallback = 48,
kUnlockGlobalLock = 49,
kAuthenticateCallback = 50,
kAuthorizeCallback = 51,
kRefreshTimeOutCallback = 52,
kCreateObjectValueCallback = 53,
kCreateObjectTypeCallback = 54,
kLockObjectCallback = 55,
kUnlockObjectCallback = 56,
kSetAttributePtrCallback = 57,
kSetIntervalRoleTimerCallback = 58,
kLockStdLibCallback = 59,
kUnlockStdLibCallback = 60,
kLastCallback = 61
};
typedef struct {
// Callback function pointer array
QTSS_CallbackProcPtr addr [kLastCallback];
} QTSS_Callbacks, *QTSS_CallbacksPtr;
typedef struct
{
UInt32 inServerAPIVersion;
QTSS_CallbacksPtr inCallbacks;
QTSS_StreamRef inErrorLogStream;
UInt32 outStubLibraryVersion;
QTSS_DispatchFuncPtr outDispatchFunction;
} QTSS_PrivateArgs, *QTSS_PrivateArgsPtr;
typedef struct
{
QTSSModule* curModule; // this structure is setup in each thread
QTSS_Role curRole; // before invoking a module in a role. Sometimes
Task* curTask; // this info. helps callback implementation
Bool16 eventRequested;
Bool16 globalLockRequested; // request event with global lock.
Bool16 isGlobalLocked;
SInt64 idleTime; // If a module has requested idle time.
} QTSS_ModuleState, *QTSS_ModuleStatePtr;
QTSS_StreamRef GetErrorLogStream();
#ifdef __cplusplus
}
#endif
#endif