00001 #ifndef PLAYBACKSOCK_H_
00002 #define PLAYBACKSOCK_H_
00003
00004 #include <vector>
00005 using namespace std;
00006
00007 #include <QStringList>
00008 #include <QDateTime>
00009 #include <QMutex>
00010 #include <QSize>
00011
00012 #include "programinfo.h"
00013 #include "inputinfo.h"
00014
00015 class MythSocket;
00016 class MainServer;
00017 class ProgramInfo;
00018
00019 typedef enum {
00020 kPBSEvents_None = 0,
00021 kPBSEvents_Normal = 1,
00022 kPBSEvents_NonSystem = 2,
00023 kPBSEvents_SystemOnly = 3
00024 } PlaybackSockEventsMode;
00025
00026 class PlaybackSock
00027 {
00028 public:
00029 PlaybackSock(MainServer *parent, MythSocket *lsock,
00030 QString lhostname, PlaybackSockEventsMode eventsMode);
00031 virtual ~PlaybackSock();
00032
00033 void UpRef(void);
00034 bool DownRef(void);
00035
00036 void SetDisconnected(void) { disconnected = true; }
00037 bool IsDisconnected(void) const { return disconnected; }
00038
00039 MythSocket *getSocket(void) const { return sock; }
00040 QString getHostname(void) const { return hostname; }
00041
00042 bool isLocal(void) const { return local; }
00043 bool wantsEvents(void) const;
00044 bool wantsNonSystemEvents(void) const;
00045 bool wantsSystemEvents(void) const;
00046 bool wantsOnlySystemEvents(void) const;
00047 PlaybackSockEventsMode eventsMode(void) const;
00048
00049 bool getBlockShutdown(void) const { return blockshutdown; }
00050 void setBlockShutdown(bool value) { blockshutdown = value; }
00051
00052
00053 bool isSlaveBackend(void) const { return backend; }
00054 void setAsSlaveBackend(void) { backend = true; mediaserver = true; }
00055
00056 bool isMediaServer(void) const { return mediaserver; }
00057 void setAsMediaServer(void) { mediaserver = true; }
00058
00059 bool isExpectingReply(void) const { return expectingreply; }
00060
00061 void setIP(QString &lip) { ip = lip; }
00062 QString getIP(void) const { return ip; }
00063
00064 bool GoToSleep(void);
00065 void GetDiskSpace(QStringList &o_strlist);
00066 int DeleteFile(const QString &filename, const QString &sgroup);
00067 int StopRecording(const ProgramInfo *pginfo);
00068 int CheckRecordingActive(const ProgramInfo *pginfo);
00069 int DeleteRecording(const ProgramInfo *pginfo, bool forceMetadataDelete = false);
00070 bool FillProgramInfo(ProgramInfo &pginfo, const QString &playbackhost);
00071 QStringList GetSGFileList(QString &host, QString &groupname,
00072 QString &directory, bool fileNamesOnly);
00073 QStringList GetSGFileQuery(QString &host, QString &groupname,
00074 QString &filename);
00075 QString GetFileHash(QString filename, QString storageGroup);
00076
00077 QStringList GenPreviewPixmap(const QString &token,
00078 const ProgramInfo *pginfo);
00079 QStringList GenPreviewPixmap(const QString &token,
00080 const ProgramInfo *pginfo,
00081 bool time_fmt_sec,
00082 long long time,
00083 const QString &outputFile,
00084 const QSize &outputSize);
00085 QDateTime PixmapLastModified(const ProgramInfo *pginfo);
00086 bool CheckFile(ProgramInfo *pginfo);
00087
00088 bool IsBusy(int capturecardnum,
00089 InputInfo *busy_input = NULL,
00090 int time_buffer = 5);
00091 int GetEncoderState(int capturecardnum);
00092 long long GetMaxBitrate(int capturecardnum);
00093 ProgramInfo *GetRecording(uint cardid);
00094 bool EncoderIsRecording(int capturecardnum, const ProgramInfo *pginfo);
00095 RecStatusType StartRecording(int capturecardnum,
00096 const ProgramInfo *pginfo);
00097 RecStatusType GetRecordingStatus(int capturecardnum);
00098 void RecordPending(int capturecardnum, const ProgramInfo *pginfo,
00099 int secsleft, bool hasLater);
00100 int SetSignalMonitoringRate(int capturecardnum, int rate, int notifyFrontend);
00101 void SetNextLiveTVDir(int capturecardnum, QString dir);
00102 vector<InputInfo> GetFreeInputs(int capturecardnum,
00103 const vector<uint> &excluded_cardids);
00104 void CancelNextRecording(int capturecardnum, bool cancel);
00105
00106 QStringList ForwardRequest(const QStringList&);
00107
00108 private:
00109 bool SendReceiveStringList(QStringList &strlist, uint min_reply_length = 0);
00110
00111 MythSocket *sock;
00112 QString hostname;
00113 QString ip;
00114
00115 bool local;
00116 PlaybackSockEventsMode m_eventsMode;
00117 bool blockshutdown;
00118 bool backend;
00119 bool mediaserver;
00120
00121 QMutex refLock;
00122 QMutex sockLock;
00123
00124 bool expectingreply;
00125 bool disconnected;
00126
00127 int refCount;
00128
00129 MainServer *m_parent;
00130 };
00131
00132 #endif
00133
00134