MythTV  master
v2backendStatus.h
Go to the documentation of this file.
1 // 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 
23 class 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 
46 class 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:
64  Q_DISABLE_COPY(V2StorageGroup);
65 };
67 
68 class 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:
99  Q_DISABLE_COPY(V2MachineInfo);
100 };
102 
103 class 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( int , Cmds )
116  SERVICE_PROPERTY2( int , Flags )
117  SERVICE_PROPERTY2( int , Status )
118  SERVICE_PROPERTY2( QDateTime , StatusTime )
119  SERVICE_PROPERTY2( QString , HostName )
120  SERVICE_PROPERTY2( QString , Args )
121  SERVICE_PROPERTY2( QString , Comment )
122  Q_PROPERTY( QObject* Program READ Program USER true)
124 
125  public:
126  Q_INVOKABLE V2Job(QObject *parent = nullptr)
127  : QObject( parent )
128  {
129  }
130  private:
131  Q_DISABLE_COPY(V2Job);
132 
133 };
135 
136 
137 class V2BackendStatus : public QObject
138 {
139  Q_OBJECT
140  Q_CLASSINFO( "Version", "1.0" );
141 
142  Q_CLASSINFO( "Encoders", "type=V2Encoder")
143  Q_CLASSINFO( "Scheduled", "type=V2Program")
144  Q_CLASSINFO( "Frontends", "type=V2Frontend")
145  Q_CLASSINFO( "Backends", "type=V2Backend")
146  Q_CLASSINFO( "JobQueue", "type=V2Job")
147  Q_CLASSINFO( "AsOf" , "transient=true" )
148 
149  SERVICE_PROPERTY2( QDateTime , AsOf )
150  SERVICE_PROPERTY2( QString , Version )
151  SERVICE_PROPERTY2( QString , ProtoVer )
152  SERVICE_PROPERTY2( QVariantList, Encoders )
153  SERVICE_PROPERTY2( QVariantList, Scheduled )
154  SERVICE_PROPERTY2( QVariantList, Frontends )
155  SERVICE_PROPERTY2( QVariantList, Backends )
156  SERVICE_PROPERTY2( QVariantList, JobQueue )
157  Q_PROPERTY( QObject* MachineInfo READ MachineInfo USER true)
158  SERVICE_PROPERTY_PTR(V2MachineInfo, MachineInfo )
159  SERVICE_PROPERTY2( QString , Miscellaneous )
160 
161  public:
162  Q_INVOKABLE V2BackendStatus(QObject *parent = nullptr)
163  : QObject(parent)
164  {
165  }
166  // These are here so that a routine in serviceutil
167  // can fill the QVariantlist. Unfortunately the standard
168  // call [e.g. Encoders()] generated by the macros returns a
169  // const QVariantlist.
170  QVariantList& GetEncoders() {return m_Encoders;}
171  QVariantList& GetScheduled() {return m_Scheduled;}
172  QVariantList& GetFrontends() {return m_Frontends;}
173 
175  {
176  // We must make sure the object added to the QVariantList has
177  // a parent of 'this'
178  auto *pObject = new V2Job( this );
179  m_JobQueue.append( QVariant::fromValue<QObject *>( pObject ));
180  return pObject;
181  }
182 
184  {
185  // We must make sure the object added to the QVariantList has
186  // a parent of 'this'
187  auto *pObject = new V2Backend( this );
188  m_Backends.append( QVariant::fromValue<QObject *>( pObject ));
189  return pObject;
190  }
191 
192 
193  private:
194  Q_DISABLE_COPY(V2BackendStatus);
195 };
197 
198 #endif // V2BACKENDSTATUS_H_
V2BackendStatus::GetFrontends
QVariantList & GetFrontends()
Definition: v2backendStatus.h:172
V2BackendStatus::AddNewBackend
V2Backend * AddNewBackend()
Definition: v2backendStatus.h:183
V2BackendStatus::GetScheduled
QVariantList & GetScheduled()
Definition: v2backendStatus.h:171
v2programAndChannel.h
V2Backend::Q_DISABLE_COPY
Q_DISABLE_COPY(V2Backend)
V2StorageGroup::V2StorageGroup
Q_INVOKABLE V2StorageGroup(QObject *parent=nullptr)
Definition: v2backendStatus.h:59
V2Backend::V2Backend
Q_INVOKABLE V2Backend(QObject *parent=nullptr)
Definition: v2backendStatus.h:34
true
VERBOSE_PREAMBLE Most true
Definition: verbosedefs.h:95
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(StandardSetting *)
V2BackendStatus::GetEncoders
QVariantList & GetEncoders()
Definition: v2backendStatus.h:170
V2MachineInfo
Definition: v2backendStatus.h:68
V2BackendStatus
Definition: v2backendStatus.h:137
V2Backend::Q_CLASSINFO
Q_CLASSINFO("version", "1.0")
SERVICE_PROPERTY2
#define SERVICE_PROPERTY2(Type, Name)
Definition: mythhttpservice.h:72
v2encoder.h
GuideStatus
Definition: guidegrid.cpp:190
V2MachineInfo::AddNewStorageGroup
V2StorageGroup * AddNewStorageGroup()
Definition: v2backendStatus.h:89
SERVICE_PROPERTY_PTR
#define SERVICE_PROPERTY_PTR(type, name)
Definition: mythhttpservice.h:99
uint
unsigned int uint
Definition: compat.h:81
mythhttpservice.h
V2Backend
Definition: v2backendStatus.h:23
v2frontend.h
Name
Definition: channelsettings.cpp:71
V2Job
Definition: v2backendStatus.h:103
V2Program
Definition: v2programAndChannel.h:105
JobQueue
Definition: jobqueue.h:130
V2StorageGroup
Definition: v2backendStatus.h:46
V2BackendStatus::AddNewJob
V2Job * AddNewJob()
Definition: v2backendStatus.h:174
Encoders
std::vector< uint32_t > Encoders
Definition: mythdrmconnector.h:9
V2MachineInfo::V2MachineInfo
Q_INVOKABLE V2MachineInfo(QObject *parent=nullptr)
Definition: v2backendStatus.h:85