vdr-plugin-streamdev/server/connectionHTTP.h

69 lines
1.8 KiB
C
Raw Normal View History

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;
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
};
std::string m_Authorization;
2005-02-11 17:44:14 +01:00
eHTTPStatus m_Status;
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
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);
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
virtual cString ToText() const;
virtual bool CanAuthenticate(void);
2004-12-30 23:43:55 +01:00
virtual bool Command(char *Cmd);
virtual bool Abort(void) const;
2004-12-30 23:43:55 +01:00
virtual void Flushed(void);
};
inline bool cConnectionHTTP::Abort(void) const
{
return !IsOpen() || (m_LiveStreamer && m_LiveStreamer->Abort());
}
2004-12-30 23:43:55 +01:00
#endif // VDR_STREAMDEV_SERVERS_CONNECTIONVTP_H