00001 /*************************************************************************** 00002 RTSPServerLayer.h 00003 ------------------- 00004 begin : Sun Jun 09 2002 00005 ***************************************************************************/ 00006 00007 /*************************************************************************** 00008 * * 00009 * This program is free software; you can redistribute it and/or modify * 00010 * it under the terms of the GNU General Public License as published by * 00011 * the Free Software Foundation; either version 2 of the License, or * 00012 * (at your option) any later version. * 00013 * * 00014 ***************************************************************************/ 00015 00020 #include "omnetpp.h" 00021 00022 #include "sockets.h" 00023 #include "in_addr.h" 00024 #include "in_port.h" 00025 00026 #include "RTSPMessage_m.h" 00027 #include "RTPInterfacePacket.h" 00028 00034 class RTSPServerLayer : public cSimpleModule { 00035 00036 Module_Class_Members(RTSPServerLayer, cSimpleModule, 0); 00037 00041 enum FSM_STATES { 00042 00043 INIT = 0, 00044 READY = FSM_Steady(1), 00045 PLAYING = FSM_Steady(2), 00046 }; 00047 00051 virtual void initialize(); 00052 00056 virtual void handleMessage(cMessage *msg); 00057 00058 00059 protected: 00060 00064 cFSM fsm; 00065 00069 virtual void handleMessageFromSocketLayer(cMessage *msg); 00070 00074 virtual void handleMessageFromServerModule(cMessage *msg); 00075 00079 virtual void handleMessageFromRTP(cMessage *msg); 00080 00084 virtual void handleRequest(); 00085 00089 virtual void handleRequestStateInit(); 00090 00094 virtual void handleRequestStateReady(); 00095 00099 virtual void handleRequestStatePlaying(); 00100 00104 virtual void handleSelfMessage(cMessage *msg); 00105 00106 private: 00107 00111 bool _debug; 00112 00116 IN_Port _portRTP; 00117 00121 u_int32 _ssrc; 00122 00126 rtspResponse *response; 00127 00131 rtspRequest *request; 00132 00136 Socket::Filedesc _socketFd; 00137 00141 char *_filename; 00142 00146 float _rangeFrom; 00147 00151 float _rangeTo; 00152 00156 char _url[255]; 00157 00161 virtual void writeRequestContents(rtspRequest *request); 00162 00166 virtual void writeResponseContents(rtspResponse *response); 00167 00168 };