MythTV master
v2backendStatus.h
Go to the documentation of this file.
1
2// Program Name: backendStatus.h
3// Created : Oct. 18, 2021
4//
5// Copyright (c) 2021 Peter Bennett <pbennett@mythtv.org>
6//
7// Licensed under the GPL v2 or later, see COPYING for details
8//
10
11#ifndef V2BACKENDSTATUS_H_
12#define V2BACKENDSTATUS_H_
13
14#include <QDateTime>
15#include <QString>
16#include <QVariantList>
17
19#include "v2programAndChannel.h"
20#include "v2encoder.h"
21#include "v2frontend.h"
22
23class V2Backend : public QObject
24{
25 Q_OBJECT
26 Q_CLASSINFO( "version" , "1.0" );
27
28 SERVICE_PROPERTY2( QString , Name )
29 SERVICE_PROPERTY2( QString , IP )
30 SERVICE_PROPERTY2( QString , Type )
31
32 public:
33
34 Q_INVOKABLE V2Backend(QObject *parent = nullptr)
35 : QObject ( parent )
36 {
37 }
38
39 private:
41};
42
44
45
46class V2StorageGroup : public QObject
47{
48 Q_OBJECT
49 Q_CLASSINFO( "Version", "1.0" );
50 SERVICE_PROPERTY2(QString, Id)
51 SERVICE_PROPERTY2(int, Used)
52 SERVICE_PROPERTY2(int, Free)
53 SERVICE_PROPERTY2(int, Deleted)
54 SERVICE_PROPERTY2(int, Total)
55 SERVICE_PROPERTY2(int, Expirable)
56 SERVICE_PROPERTY2(int, LiveTV)
57 SERVICE_PROPERTY2(QString, Directory)
58 public:
59 Q_INVOKABLE V2StorageGroup(QObject *parent = nullptr)
60 : QObject( parent )
61 {
62 }
63 private:
65};
67
68class V2MachineInfo : public QObject
69{
70 Q_OBJECT
71 Q_CLASSINFO( "Version", "1.0" );
72 Q_CLASSINFO( "StorageGroups", "type=V2StorageGroup");
73 SERVICE_PROPERTY2( QVariantList, StorageGroups );
74 SERVICE_PROPERTY2(float, LoadAvg1)
75 SERVICE_PROPERTY2(float, LoadAvg2)
76 SERVICE_PROPERTY2(float, LoadAvg3)
77 SERVICE_PROPERTY2(QDateTime, GuideStart)
78 SERVICE_PROPERTY2(QDateTime, GuideEnd)
79 SERVICE_PROPERTY2(QDateTime, GuideThru)
80 SERVICE_PROPERTY2(int, GuideDays)
82 SERVICE_PROPERTY2(QString, GuideNext)
83
84 public:
85 Q_INVOKABLE V2MachineInfo(QObject *parent = nullptr)
86 : QObject( parent )
87 {
88 }
90 {
91 // We must make sure the object added to the QVariantList has
92 // a parent of 'this'
93 auto *pObject = new V2StorageGroup( this );
94 m_StorageGroups.append( QVariant::fromValue<QObject *>( pObject ));
95 return pObject;
96 }
97
98 private:
100};
102
103class V2Job : public QObject
104{
105 Q_OBJECT
106 Q_CLASSINFO( "Version", "1.0" );
107
108 SERVICE_PROPERTY2( int , Id )
109 SERVICE_PROPERTY2( uint , ChanId )
110 SERVICE_PROPERTY2( QDateTime , StartTime )
111 SERVICE_PROPERTY2( QDateTime , SchedRunTime )
112 SERVICE_PROPERTY2( QString , StartTs )
113 SERVICE_PROPERTY2( QDateTime , InsertTime )
114 SERVICE_PROPERTY2( int , Type )
115 SERVICE_PROPERTY2( QString , LocalizedJobName )
116 SERVICE_PROPERTY2( int , Cmds )
117 SERVICE_PROPERTY2( int , Flags )
118 SERVICE_PROPERTY2( int , Status )
119 SERVICE_PROPERTY2( QString , LocalizedStatus )
120 SERVICE_PROPERTY2( QDateTime , StatusTime )
121 SERVICE_PROPERTY2( QString , HostName )
122 SERVICE_PROPERTY2( QString , Args )
123 SERVICE_PROPERTY2( QString , Comment )
124 Q_PROPERTY( QObject* Program READ Program USER true)
126
127 public:
128 Q_INVOKABLE V2Job(QObject *parent = nullptr)
129 : QObject( parent )
130 {
131 }
132 private:
134
135};
137
138
139class V2BackendStatus : public QObject
140{
141 Q_OBJECT
142 Q_CLASSINFO( "Version", "1.0" );
143
144 Q_CLASSINFO( "Encoders", "type=V2Encoder")
145 Q_CLASSINFO( "Scheduled", "type=V2Program")
146 Q_CLASSINFO( "Frontends", "type=V2Frontend")
147 Q_CLASSINFO( "Backends", "type=V2Backend")
148 Q_CLASSINFO( "JobQueue", "type=V2Job")
149 Q_CLASSINFO( "AsOf" , "transient=true" )
150
151 SERVICE_PROPERTY2( QDateTime , AsOf )
152 SERVICE_PROPERTY2( QString , Version )
153 SERVICE_PROPERTY2( QString , ProtoVer )
154 SERVICE_PROPERTY2( QVariantList, Encoders )
155 SERVICE_PROPERTY2( QVariantList, Scheduled )
156 SERVICE_PROPERTY2( QVariantList, Frontends )
157 SERVICE_PROPERTY2( QVariantList, Backends )
158 SERVICE_PROPERTY2( QVariantList, JobQueue )
159 Q_PROPERTY( QObject* MachineInfo READ MachineInfo USER true)
161 SERVICE_PROPERTY2( QString , Miscellaneous )
162
163 public:
164 Q_INVOKABLE V2BackendStatus(QObject *parent = nullptr)
165 : QObject(parent)
166 {
167 }
168 // These are here so that a routine in serviceutil
169 // can fill the QVariantlist. Unfortunately the standard
170 // call [e.g. Encoders()] generated by the macros returns a
171 // const QVariantlist.
172 QVariantList& GetEncoders() {return m_Encoders;}
173 QVariantList& GetScheduled() {return m_Scheduled;}
174 QVariantList& GetFrontends() {return m_Frontends;}
175
177 {
178 // We must make sure the object added to the QVariantList has
179 // a parent of 'this'
180 auto *pObject = new V2Job( this );
181 m_JobQueue.append( QVariant::fromValue<QObject *>( pObject ));
182 return pObject;
183 }
184
186 {
187 // We must make sure the object added to the QVariantList has
188 // a parent of 'this'
189 auto *pObject = new V2Backend( this );
190 m_Backends.append( QVariant::fromValue<QObject *>( pObject ));
191 return pObject;
192 }
193
194
195 private:
197};
199
200#endif // V2BACKENDSTATUS_H_
QVariantList & GetEncoders()
Q_DISABLE_COPY(V2BackendStatus)
QVariantList & GetFrontends()
V2Backend * AddNewBackend()
QVariantList & GetScheduled()
Q_CLASSINFO("version", "1.0")
Q_INVOKABLE V2Backend(QObject *parent=nullptr)
Q_DISABLE_COPY(V2Backend)
Q_INVOKABLE V2Job(QObject *parent=nullptr)
Q_DISABLE_COPY(V2Job)
V2StorageGroup * AddNewStorageGroup()
Q_INVOKABLE V2MachineInfo(QObject *parent=nullptr)
SERVICE_PROPERTY2(QVariantList, StorageGroups)
Q_DISABLE_COPY(V2MachineInfo)
Q_CLASSINFO("StorageGroups", "type=V2StorageGroup")
Q_CLASSINFO("Version", "1.0")
Q_DISABLE_COPY(V2StorageGroup)
Q_CLASSINFO("Version", "1.0")
Q_INVOKABLE V2StorageGroup(QObject *parent=nullptr)
unsigned int uint
Definition: freesurround.h:24
Q_DECLARE_METATYPE(std::chrono::seconds)
std::vector< uint32_t > Encoders
#define SERVICE_PROPERTY2(Type, Name)
#define SERVICE_PROPERTY_PTR(type, name)
VERBOSE_PREAMBLE Most true
Definition: verbosedefs.h:95