Add even more of the source
This should be about everything needed to build so far?
This commit is contained in:
parent
af3619d4fa
commit
849723c9cf
547 changed files with 149239 additions and 0 deletions
173
Server.tproj/QTSServer.h
Normal file
173
Server.tproj/QTSServer.h
Normal file
|
@ -0,0 +1,173 @@
|
|||
/*
|
||||
*
|
||||
* @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: QTSServer.h
|
||||
|
||||
Contains: This object is responsible for bringing up & shutting down
|
||||
the server. It also loads & initializes all modules.
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __QTSSERVER_H__
|
||||
#define __QTSSERVER_H__
|
||||
|
||||
#include "QTSServerInterface.h"
|
||||
#include "Task.h"
|
||||
|
||||
class RTCPTask;
|
||||
class RTSPListenerSocket;
|
||||
class RTPSocketPool;
|
||||
class SessionTimeoutTask;
|
||||
|
||||
class QTSServer : public QTSServerInterface
|
||||
{
|
||||
public:
|
||||
|
||||
QTSServer() {}
|
||||
virtual ~QTSServer();
|
||||
|
||||
//
|
||||
// Initialize
|
||||
//
|
||||
// This function starts the server. If it returns true, the server has
|
||||
// started up sucessfully. If it returns false, a fatal error occurred
|
||||
// while attempting to start the server.
|
||||
//
|
||||
// This function *must* be called before the server creates any threads,
|
||||
// because one of its actions is to change the server to the right UID / GID.
|
||||
// Threads will only inherit these if they are created afterwards.
|
||||
Bool16 Initialize(XMLPrefsParser* inPrefsSource, PrefsSource* inMessagesSource,
|
||||
UInt16 inPortOverride, Bool16 createListeners);
|
||||
|
||||
//
|
||||
// InitModules
|
||||
//
|
||||
// Initialize *does not* do much of the module initialization tasks. This
|
||||
// function may be called after the server has created threads, but the
|
||||
// server must not be in a state where it can do real work. In other words,
|
||||
// call this function right after calling Initialize.
|
||||
void InitModules(QTSS_ServerState inEndState);
|
||||
|
||||
//
|
||||
// StartTasks
|
||||
//
|
||||
// The server has certain global tasks that it runs for things like stats
|
||||
// updating and RTCP processing. This function must be called to start those
|
||||
// going, and it must be called after Initialize
|
||||
void StartTasks();
|
||||
|
||||
|
||||
//
|
||||
// RereadPrefsService
|
||||
//
|
||||
// This service is registered by the server (calling "RereadPreferences").
|
||||
// It rereads the preferences. Anyone can call this to reread the preferences,
|
||||
// and it may be called safely at any time, though it will fail with a
|
||||
// QTSS_OutOfState if the server isn't in the qtssRunningState.
|
||||
|
||||
static QTSS_Error RereadPrefsService(QTSS_ServiceFunctionArgsPtr inArgs);
|
||||
|
||||
//
|
||||
// CreateListeners
|
||||
//
|
||||
// This function may be called multiple times & at any time.
|
||||
// It updates the server's listeners to reflect what the preferences say.
|
||||
// Returns false if server couldn't listen on one or more of the ports, true otherwise
|
||||
Bool16 CreateListeners(Bool16 startListeningNow, QTSServerPrefs* inPrefs, UInt16 inPortOverride);
|
||||
|
||||
//
|
||||
// SetDefaultIPAddr
|
||||
//
|
||||
// Sets the IP address related attributes of the server.
|
||||
Bool16 SetDefaultIPAddr();
|
||||
|
||||
Bool16 SetupUDPSockets();
|
||||
|
||||
Bool16 SwitchPersonality();
|
||||
|
||||
private:
|
||||
|
||||
//
|
||||
// GLOBAL TASKS
|
||||
RTCPTask* fRTCPTask;
|
||||
RTPStatsUpdaterTask*fStatsTask;
|
||||
SessionTimeoutTask *fSessionTimeoutTask;
|
||||
static char* sPortPrefString;
|
||||
static XMLPrefsParser* sPrefsSource;
|
||||
static PrefsSource* sMessagesSource;
|
||||
|
||||
//
|
||||
// Module loading & unloading routines
|
||||
|
||||
static QTSS_Callbacks sCallbacks;
|
||||
|
||||
// Sets up QTSS API callback routines
|
||||
void InitCallbacks();
|
||||
|
||||
// Loads compiled-in modules
|
||||
void LoadCompiledInModules();
|
||||
|
||||
// Loads modules from disk
|
||||
void LoadModules(QTSServerPrefs* inPrefs);
|
||||
void CreateModule(char* inModuleFolderPath, char* inModuleName);
|
||||
|
||||
// Adds a module to the module array
|
||||
Bool16 AddModule(QTSSModule* inModule);
|
||||
|
||||
// Call module init roles
|
||||
void DoInitRole();
|
||||
void SetupPublicHeader();
|
||||
UInt32* GetRTSPIPAddrs(QTSServerPrefs* inPrefs, UInt32* outNumAddrsPtr);
|
||||
UInt16* GetRTSPPorts(QTSServerPrefs* inPrefs, UInt32* outNumPortsPtr);
|
||||
|
||||
// Build & destroy the optimized role / module arrays for invoking modules
|
||||
void BuildModuleRoleArrays();
|
||||
void DestroyModuleRoleArrays();
|
||||
|
||||
|
||||
#ifndef __Win32__
|
||||
static pid_t sMainPid;
|
||||
#endif
|
||||
|
||||
|
||||
friend class RTPSocketPool;
|
||||
};
|
||||
|
||||
class RereadPrefsTask : public Task
|
||||
{
|
||||
public:
|
||||
virtual SInt64 Run()
|
||||
{
|
||||
QTSServer::RereadPrefsService(NULL);
|
||||
return -1;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#endif // __QTSSERVER_H__
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue