00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef MN_RTSP_FILLBUFFER_H
00025
#define MN_RTSP_FILLBUFFER_H
00026
00027
#include "ControlBase.h"
00028
#include "MNSelector.h"
00029
#include "MNTCPSocket.h"
00030
#include "MNRope.h"
00031
#include "MNMutex.h"
00032
#include "dictionary.h"
00033
00034
class RTSPParser;
00035
00036
00037 class RTSPFillBuffer :
public ControlBase
00038 ,
public MNTCPSocket
00039 {
00040
MNRope _rope;
00041
00045
MNSelector& _selector;
00046
00048
friend class TestCachingFillBuffer;
00049
00054
bool _char_mode;
00055
long _read_size;
00056
00057
00058
00059
bool _connect_fail_is_fatal;
00060
00064
MNMutex _sendMutex;
00065
00070
dictionary<int,MNString> _messages;
00071
00077
int __next_cseq_to_assign;
00078
int next_cseq_to_assign()
const;
00079
void inc_next_cseq_to_assign();
00080
int _bandwidth;
00081
00089
int __next_cseq_to_send;
00090
int next_cseq_to_send()
const;
00091
void inc_next_cseq_to_send();
00092
00098
void writeQueue(
int cseq,
MNString msg );
00099
00103
int getCSeq(
MNString text );
00104
00105
private:
00106
const char* _rc_text(
int code );
00107
00108
RTSPFillBuffer&
operator=(
const RTSPFillBuffer& );
00109
RTSPFillBuffer(
const RTSPFillBuffer& );
00110
00111
public:
00112
RTSPFillBuffer(
MNSelector& slct );
00113
RTSPFillBuffer(
MNSelector& slct,
int fd );
00114
virtual ~RTSPFillBuffer( );
00115
00122
virtual MNTCPSocket::Fail
connect(
int port,
const char* hostname );
00123
00124
00125
00126
void setConnectFailIsFatal();
00127
00128
virtual void callback(
MNSelector* slct,
int fd );
00129
void reader( );
00130
00146
virtual void receiveIt( uchar_t* buffer,
00147
int bufsz,
00148
int fd );
00149
00153
virtual void MsgOut(
int errNo,
00154
const MNString& headers,
00155
const MNString& body,
00156
int seq );
00157
00161
virtual void MsgOut(
const MNString& text,
00162
int seq );
00163
00166
virtual void MsgOut(
const MNString& text);
00167
00170
virtual void MsgOutNoEOL(
const MNString& text );
00171
void MsgOut(
MNString text,
00172
int seq,
00173
MNString body );
00174
int MsgOut2LibServer(
MNString text );
00175
00176
void CreateCSeqAnswer(
MNString &Answer,
int seq );
00177
00178
00179
virtual MNString getClientHostname();
00180
virtual MNString getMulticastAddress();
00181
00182
MNString Rope2MNString(
MNRope& rope );
00183
MNString getLastHeaderString ( ) ;
00184
MNString getLastSDPString ( ) ;
00185
00186
void deleteHeaderLine(
MNString,
MNString,
MNString&,
MNString&);
00187
00193
virtual int getNextCSeq( );
00194
void setBandwidth(
int bw );
00195
int getBandwidth( )
const;
00196 };
00197
00198
#endif
00199