2004-12-30 23:43:55 +01:00
|
|
|
/*
|
2010-12-02 09:57:17 +01:00
|
|
|
* $Id: connectionHTTP.h,v 1.7 2010/07/19 13:49:31 schmirl Exp $
|
2004-12-30 23:43:55 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef VDR_STREAMDEV_SERVERS_CONNECTIONHTTP_H
|
|
|
|
#define VDR_STREAMDEV_SERVERS_CONNECTIONHTTP_H
|
|
|
|
|
|
|
|
#include "connection.h"
|
2005-02-11 17:44:14 +01:00
|
|
|
#include "server/livestreamer.h"
|
2004-12-30 23:43:55 +01:00
|
|
|
|
2010-12-02 09:57:17 +01:00
|
|
|
#include <map>
|
2004-12-30 23:43:55 +01:00
|
|
|
#include <tools/select.h>
|
|
|
|
|
|
|
|
class cChannel;
|
|
|
|
class cStreamdevLiveStreamer;
|
2008-03-28 16:11:40 +01:00
|
|
|
class cChannelList;
|
2004-12-30 23:43:55 +01:00
|
|
|
|
|
|
|
class cConnectionHTTP: public cServerConnection {
|
|
|
|
private:
|
|
|
|
enum eHTTPStatus {
|
|
|
|
hsRequest,
|
|
|
|
hsHeaders,
|
2005-02-11 17:44:14 +01:00
|
|
|
hsBody,
|
|
|
|
hsFinished,
|
2004-12-30 23:43:55 +01:00
|
|
|
};
|
|
|
|
|
2008-10-14 13:05:46 +02:00
|
|
|
std::string m_Authorization;
|
2005-02-11 17:44:14 +01:00
|
|
|
eHTTPStatus m_Status;
|
2012-11-16 02:00:09 +01:00
|
|
|
tStrStrMap m_Params;
|
2005-02-11 17:44:14 +01:00
|
|
|
// job: transfer
|
|
|
|
cStreamdevLiveStreamer *m_LiveStreamer;
|
|
|
|
const cChannel *m_Channel;
|
2010-12-02 09:57:17 +01:00
|
|
|
int m_Apid[2];
|
|
|
|
int m_Dpid[2];
|
2005-02-11 17:44:14 +01:00
|
|
|
eStreamType m_StreamType;
|
|
|
|
// job: listing
|
2008-03-28 16:11:40 +01:00
|
|
|
cChannelList *m_ChannelList;
|
2005-02-11 17:44:14 +01:00
|
|
|
|
2010-12-02 09:57:17 +01:00
|
|
|
cChannelList* ChannelListFromString(const std::string &PathInfo, const std::string &Filebase, const std::string &Fileext) const;
|
|
|
|
bool ProcessURI(const std::string &PathInfo);
|
2012-11-16 02:00:09 +01:00
|
|
|
bool HttpResponse(int Code, bool Last, const char* ContentType = NULL, const char* Headers = "", ...);
|
|
|
|
//__attribute__ ((format (printf, 5, 6)));
|
2005-02-11 17:44:14 +01:00
|
|
|
protected:
|
|
|
|
bool ProcessRequest(void);
|
2004-12-30 23:43:55 +01:00
|
|
|
|
|
|
|
public:
|
|
|
|
cConnectionHTTP(void);
|
|
|
|
virtual ~cConnectionHTTP();
|
|
|
|
|
2005-02-11 17:44:14 +01:00
|
|
|
virtual void Attach(void) { if (m_LiveStreamer != NULL) m_LiveStreamer->Attach(); }
|
|
|
|
virtual void Detach(void) { if (m_LiveStreamer != NULL) m_LiveStreamer->Detach(); }
|
2004-12-30 23:43:55 +01:00
|
|
|
|
2011-11-28 16:23:57 +01:00
|
|
|
virtual cString ToText() const;
|
|
|
|
|
2008-10-14 13:05:46 +02:00
|
|
|
virtual bool CanAuthenticate(void);
|
|
|
|
|
2004-12-30 23:43:55 +01:00
|
|
|
virtual bool Command(char *Cmd);
|
|
|
|
|
2007-04-02 12:32:34 +02:00
|
|
|
virtual bool Abort(void) const;
|
2004-12-30 23:43:55 +01:00
|
|
|
virtual void Flushed(void);
|
|
|
|
};
|
|
|
|
|
2007-04-02 12:32:34 +02:00
|
|
|
inline bool cConnectionHTTP::Abort(void) const
|
|
|
|
{
|
2011-11-28 16:23:57 +01:00
|
|
|
return !IsOpen() || (m_LiveStreamer && m_LiveStreamer->Abort());
|
2007-04-02 12:32:34 +02:00
|
|
|
}
|
|
|
|
|
2004-12-30 23:43:55 +01:00
|
|
|
#endif // VDR_STREAMDEV_SERVERS_CONNECTIONVTP_H
|