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( 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:
133  Q_DISABLE_COPY(V2Job);
134 
135 };
137 
138 
139 class 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)
160  SERVICE_PROPERTY_PTR(V2MachineInfo, MachineInfo )
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:
196  Q_DISABLE_COPY(V2BackendStatus);
197 };
199 
200 #endif // V2BACKENDSTATUS_H_
V2BackendStatus::GetFrontends
QVariantList & GetFrontends()
Definition: v2backendStatus.h:174
V2BackendStatus::AddNewBackend
V2Backend * AddNewBackend()
Definition: v2backendStatus.h:185
V2BackendStatus::GetScheduled
QVariantList & GetScheduled()
Definition: v2backendStatus.h:173
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:172
V2MachineInfo
Definition: v2backendStatus.h:68
V2BackendStatus
Definition: v2backendStatus.h:139
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:128
V2StorageGroup
Definition: v2backendStatus.h:46
V2BackendStatus::AddNewJob
V2Job * AddNewJob()
Definition: v2backendStatus.h:176
Encoders
std::vector< uint32_t > Encoders
Definition: mythdrmconnector.h:9
V2MachineInfo::V2MachineInfo
Q_INVOKABLE V2MachineInfo(QObject *parent=nullptr)
Definition: v2backendStatus.h:85