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
128
Server.tproj/RTSPRequest.h
Normal file
128
Server.tproj/RTSPRequest.h
Normal file
|
@ -0,0 +1,128 @@
|
|||
/*
|
||||
*
|
||||
* @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: RTSPRequest.h
|
||||
|
||||
Contains: This class encapsulates a single RTSP request. It stores the meta data
|
||||
associated with a request, and provides an interface (through its base
|
||||
class) for modules to access request information
|
||||
|
||||
It divides the request into a series of states.
|
||||
|
||||
State 1: At first, when the object is constructed or right after
|
||||
its Reset function is called, it is in an uninitialized state.
|
||||
State 2: Parse() parses an RTSP header. Once this function returns,
|
||||
most of the request-related query functions have been setup.
|
||||
(unless an error occurs)
|
||||
State 3: GetHandler() uses the request information to create the
|
||||
proper request Handler object for this request. After that,
|
||||
it is the Handler object's responsibilty to process the
|
||||
request and send a response to the client.
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __RTSPREQUEST_H__
|
||||
#define __RTSPREQUEST_H__
|
||||
|
||||
#include "RTSPRequestInterface.h"
|
||||
#include "RTSPRequestStream.h"
|
||||
#include "RTSPResponseStream.h"
|
||||
#include "RTSPSessionInterface.h"
|
||||
#include "StringParser.h"
|
||||
#include "QTSSRTSPProtocol.h"
|
||||
|
||||
//HTTPRequest class definition
|
||||
class RTSPRequest : public RTSPRequestInterface
|
||||
{
|
||||
public:
|
||||
|
||||
//CONSTRUCTOR / DESTRUCTOR
|
||||
//these do very little. Just initialize / delete some member data.
|
||||
//
|
||||
//Arguments: session: the session this request is on (massive cyclical dependency)
|
||||
RTSPRequest(RTSPSessionInterface* session)
|
||||
: RTSPRequestInterface(session) {}
|
||||
virtual ~RTSPRequest() {}
|
||||
|
||||
//Parses the request. Returns an error handler if there was an error encountered
|
||||
//in parsing.
|
||||
QTSS_Error Parse();
|
||||
|
||||
QTSS_Error ParseAuthHeader(void);
|
||||
// called by ParseAuthHeader
|
||||
QTSS_Error ParseBasicHeader(StringParser *inParsedAuthLinePtr);
|
||||
|
||||
// called by ParseAuthHeader
|
||||
QTSS_Error ParseDigestHeader(StringParser *inParsedAuthLinePtr);
|
||||
|
||||
void SetupAuthLocalPath(void);
|
||||
QTSS_Error SendBasicChallenge(void);
|
||||
QTSS_Error SendDigestChallenge(UInt32 qop, StrPtrLen *nonce, StrPtrLen* opaque);
|
||||
QTSS_Error SendForbiddenResponse(void);
|
||||
private:
|
||||
|
||||
//PARSING
|
||||
enum { kRealmBuffSize = 512, kAuthNameAndPasswordBuffSize = 128, kAuthChallengeHeaderBufSize = 512};
|
||||
|
||||
//Parsing the URI line (first line of request
|
||||
QTSS_Error ParseFirstLine(StringParser &parser);
|
||||
|
||||
//Utility functions called by above
|
||||
QTSS_Error ParseURI(StringParser &parser);
|
||||
|
||||
//Parsing the rest of the headers
|
||||
//This assumes that the parser is at the beginning of the headers. It will parse
|
||||
//the headers, fill out the data & HTTPParameters object.
|
||||
//
|
||||
//Returns: A handler object signifying that a fatal syntax error has occurred
|
||||
QTSS_Error ParseHeaders(StringParser& parser);
|
||||
|
||||
|
||||
//Functions to parse the contents of particuarly complicated headers (as a convienence
|
||||
//for modules)
|
||||
void ParseRangeHeader();
|
||||
void ParseTransportHeader();
|
||||
void ParseIfModSinceHeader();
|
||||
void ParseAddrSubHeader(StrPtrLen* inSubHeader, StrPtrLen* inHeaderName, UInt32* outAddr);
|
||||
void ParseRetransmitHeader();
|
||||
void ParseContentLengthHeader();
|
||||
void ParseSpeedHeader();
|
||||
void ParsePrebufferHeader();
|
||||
void ParseTransportOptionsHeader();
|
||||
void ParseSessionHeader();
|
||||
void ParseClientPortSubHeader(StrPtrLen* inClientPortSubHeader);
|
||||
void ParseTimeToLiveSubHeader(StrPtrLen* inTimeToLiveSubHeader);
|
||||
void ParseModeSubHeader(StrPtrLen* inModeSubHeader);
|
||||
Bool16 ParseNetworkModeSubHeader(StrPtrLen* inSubHeader);
|
||||
void ParseDynamicRateHeader();
|
||||
void ParseRandomDataSizeHeader();
|
||||
void ParseBandwidthHeader();
|
||||
|
||||
static UInt8 sURLStopConditions[];
|
||||
};
|
||||
#endif // __RTSPREQUEST_H__
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue