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 <QChar> // Fix Qt6 GCC SFINAE warning
15#include <QDateTime>
16#include <QString>
17#include <QVariantList>
18
20#include "v2programAndChannel.h"
21#include "v2encoder.h"
22#include "v2frontend.h"
23
24class V2Backend : public QObject
25{
26 Q_OBJECT
27 Q_CLASSINFO( "version" , "1.0" );
28
29 SERVICE_PROPERTY2( QString , Name )
30 SERVICE_PROPERTY2( QString , IP )
31 SERVICE_PROPERTY2( QString , Type )
32
33 public:
34
35 Q_INVOKABLE V2Backend(QObject *parent = nullptr)
36 : QObject ( parent )
37 {
38 }
39
40 private:
42};
43
45
46
47class V2StorageGroup : public QObject
48{
49 Q_OBJECT
50 Q_CLASSINFO( "Version", "1.0" );
51 SERVICE_PROPERTY2(QString, Id)
52 SERVICE_PROPERTY2(int, Used)
53 SERVICE_PROPERTY2(int, Free)
54 SERVICE_PROPERTY2(int, Deleted)
55 SERVICE_PROPERTY2(int, Total)
56 SERVICE_PROPERTY2(int, Expirable)
57 SERVICE_PROPERTY2(int, LiveTV)
58 SERVICE_PROPERTY2(QString, Directory)
59 public:
60 Q_INVOKABLE V2StorageGroup(QObject *parent = nullptr)
61 : QObject( parent )
62 {
63 }
64 private:
66};
68
69class V2MachineInfo : public QObject
70{
71 Q_OBJECT
72 Q_CLASSINFO( "Version", "1.0" );
73 Q_CLASSINFO( "StorageGroups", "type=V2StorageGroup");
74 SERVICE_PROPERTY2( QVariantList, StorageGroups );
75 SERVICE_PROPERTY2(float, LoadAvg1)
76 SERVICE_PROPERTY2(float, LoadAvg2)
77 SERVICE_PROPERTY2(float, LoadAvg3)
78 SERVICE_PROPERTY2(QDateTime, GuideStart)
79 SERVICE_PROPERTY2(QDateTime, GuideEnd)
80 SERVICE_PROPERTY2(QDateTime, GuideThru)
81 SERVICE_PROPERTY2(int, GuideDays)
83 SERVICE_PROPERTY2(QString, GuideNext)
84
85 public:
86 Q_INVOKABLE V2MachineInfo(QObject *parent = nullptr)
87 : QObject( parent )
88 {
89 }
91 {
92 // We must make sure the object added to the QVariantList has
93 // a parent of 'this'
94 auto *pObject = new V2StorageGroup( this );
95 m_StorageGroups.append( QVariant::fromValue<QObject *>( pObject ));
96 return pObject;
97 }
98
99 private:
101};
103
104class V2Job : public QObject
105{
106 Q_OBJECT
107 Q_CLASSINFO( "Version", "1.0" );
108
109 SERVICE_PROPERTY2( int , Id )
110 SERVICE_PROPERTY2( uint , ChanId )
111 SERVICE_PROPERTY2( QDateTime , StartTime )
112 SERVICE_PROPERTY2( QDateTime , SchedRunTime )
113 SERVICE_PROPERTY2( QString , StartTs )
114 SERVICE_PROPERTY2( QDateTime , InsertTime )
115 SERVICE_PROPERTY2( int , Type )
116 SERVICE_PROPERTY2( QString , LocalizedJobName )
117 SERVICE_PROPERTY2( int , Cmds )
118 SERVICE_PROPERTY2( int , Flags )
119 SERVICE_PROPERTY2( int , Status )
120 SERVICE_PROPERTY2( QString , LocalizedStatus )
121 SERVICE_PROPERTY2( QDateTime , StatusTime )
122 SERVICE_PROPERTY2( QString , HostName )
123 SERVICE_PROPERTY2( QString , Args )
124 SERVICE_PROPERTY2( QString , Comment )
125 Q_PROPERTY( QObject* Program READ Program USER true)
127
128 public:
129 Q_INVOKABLE V2Job(QObject *parent = nullptr)
130 : QObject( parent )
131 {
132 }
133 private:
135
136};
138
139
140class V2BackendStatus : public QObject
141{
142 Q_OBJECT
143 Q_CLASSINFO( "Version", "1.0" );
144
145 Q_CLASSINFO( "Encoders", "type=V2Encoder")
146 Q_CLASSINFO( "Scheduled", "type=V2Program")
147 Q_CLASSINFO( "Frontends", "type=V2Frontend")
148 Q_CLASSINFO( "Backends", "type=V2Backend")
149 Q_CLASSINFO( "JobQueue", "type=V2Job")
150 Q_CLASSINFO( "AsOf" , "transient=true" )
151
152 SERVICE_PROPERTY2( QDateTime , AsOf )
153 SERVICE_PROPERTY2( QString , Version )
154 SERVICE_PROPERTY2( QString , ProtoVer )
155 SERVICE_PROPERTY2( QString , HostName )
156 SERVICE_PROPERTY2( QString , SourceVer)
157 SERVICE_PROPERTY2( QString , SourcePath)
158 SERVICE_PROPERTY2( QVariantList, Encoders )
159 SERVICE_PROPERTY2( QVariantList, Scheduled )
160 SERVICE_PROPERTY2( QVariantList, Frontends )
161 SERVICE_PROPERTY2( QVariantList, Backends )
162 SERVICE_PROPERTY2( QVariantList, JobQueue )
163 Q_PROPERTY( QObject* MachineInfo READ MachineInfo USER true)
165 SERVICE_PROPERTY2( QString , Miscellaneous )
166
167 public:
168 Q_INVOKABLE V2BackendStatus(QObject *parent = nullptr)
169 : QObject(parent)
170 {
171 }
172 // These are here so that a routine in serviceutil
173 // can fill the QVariantlist. Unfortunately the standard
174 // call [e.g. Encoders()] generated by the macros returns a
175 // const QVariantlist.
176 QVariantList& GetEncoders() {return m_Encoders;}
177 QVariantList& GetScheduled() {return m_Scheduled;}
178 QVariantList& GetFrontends() {return m_Frontends;}
179
181 {
182 // We must make sure the object added to the QVariantList has
183 // a parent of 'this'
184 auto *pObject = new V2Job( this );
185 m_JobQueue.append( QVariant::fromValue<QObject *>( pObject ));
186 return pObject;
187 }
188
190 {
191 // We must make sure the object added to the QVariantList has
192 // a parent of 'this'
193 auto *pObject = new V2Backend( this );
194 m_Backends.append( QVariant::fromValue<QObject *>( pObject ));
195 return pObject;
196 }
197
198
199 private:
201};
203
204#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: compat.h:60
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:86