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 SERVER_GM_H
00025
#define SERVER_GM_H
00026
00027
#include "SHGraphManager.h"
00028
00029
class MNString;
00030
class MNUDPSocket;
00031
class GMUser;
00032
00033
namespace SDP
00034 {
00035
struct PayloadTypeTable;
00036 };
00037
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 class ServerGM :
public SHGraphManager
00061 {
00062
00063
00064
private:
00065
bool _use_lcrtp;
00066
bool _use_send_tfrc;
00067
bool _use_recv_tfrc;
00068
00069
protected:
00070
00071
00072 int _client_max_bw;
00073
00074 inline bool lcrtp()
const {
00075
return _use_lcrtp;
00076 }
00077
00078 inline bool send_tfrc()
const {
00079
return _use_send_tfrc;
00080 }
00081
00082 inline bool recv_tfrc()
const {
00083
return _use_recv_tfrc;
00084 }
00085
00086
public:
00087
ServerGM(
GMUser* user,
MNSelector& sel );
00088
00089
virtual ~ServerGM( );
00090
00091
00092
virtual void init(
int idx) = 0;
00093
00094
virtual void uninit() = 0;
00095
virtual void start() = 0;
00096
virtual void set_hostnames(
const MNString& Client,
00097
const MNString& Server ) = 0;
00098
virtual void set_ports(
int idx,
00099
MNSocket* locDownRtp,
00100
MNSocket* locDownRtcp,
00101
int distDown,
00102
MNSocket* locUpRtp,
00103
MNSocket* locUpRtcp,
00104
int distUp ) = 0;
00105
void set_lcrtp(
bool lcrtp );
00106
00112
virtual void set_send_tfrc(
bool tfrc );
00113
00118
virtual void set_recv_tfrc(
bool tfrc );
00119
00120
virtual void setNptSeek(
int npt);
00121
virtual int getNptSeconds();
00122
virtual void setRTPTimestamp(
int idx,
u_int32 rtptime);
00123
00124
virtual void set_client_max_bw(
int client_max_bw );
00125
private:
00126
virtual int start_streamer(
int idx,
int bandwidth ) = 0;
00127
public:
00128
virtual int open_file(
int idx,
00129
const char* name,
00130
int rtp_pt,
00131 SDP::PayloadTypes int_pt,
00132
u_int32_t bw,
00133 SDP::RetransTypes int_rt,
00134
int packetsize ) = 0;
00135
virtual int play(
int start,
int stopp ) = 0;
00136
virtual int stop( ) = 0;
00137
virtual int pause( ) = 0;
00138
virtual int jump (
long pos ) = 0;
00139
00140 virtual void setLCRTPMode(
bool )
00141 { }
00142
00143 virtual long getFilePos ()
00144 {
return -1; }
00145 };
00146
00148
00149
#endif
00150