1#ifndef MYTHCORECONTEXT_H_
2#define MYTHCORECONTEXT_H_
52 void SetLocalHostname(
const QString &
hostname);
57 bool SafeConnectToMasterServer(
bool blockingClient =
true,
58 bool openEventSocket =
true);
59 bool ConnectToMasterServer(
bool blockingClient =
true,
60 bool openEventSocket =
true);
63 const QString &announcement,
64 bool *proto_mismatch =
nullptr,
66 std::chrono::milliseconds setup_timeout = -1ms);
70 bool SetupCommandSocket(
MythSocket *serverSock,
const QString &announcement,
71 std::chrono::milliseconds
timeout,
bool &proto_mismatch);
75 bool error_dialog_desired =
false);
77 static QString GenMythURL(
const QString& host = QString(),
int port = 0,
78 QString path = QString(),
79 const QString& storageGroup = QString());
81 QString GetMasterHostPrefix(
const QString &storageGroup = QString(),
82 const QString &path = QString());
83 QString GetMasterHostName(
void);
84 QString GetHostName(
void);
85 QString GetFilePrefix(
void);
87 bool IsConnectedToMaster(
void);
88 void SetAsBackend(
bool backend);
89 bool IsBackend(
void)
const;
90 void SetAsFrontend(
bool frontend);
91 bool IsFrontend(
void)
const;
92 bool IsFrontendOnly(
void);
94 bool IsMasterHost(
void);
95 bool IsMasterHost(
const QString &host);
97 static bool BackendIsRunning(
void);
99 bool IsThisBackend(
const QString &addr);
100 bool IsThisHost(
const QString &addr);
101 bool IsThisHost(
const QString &addr,
const QString &host);
103 void BlockShutdown(
void);
104 void AllowShutdown(
void);
105 bool IsBlockingClient(
void)
const;
107 void SetWOLAllowed(
bool allow);
108 bool IsWOLAllowed()
const;
110 bool SendReceiveStringList(QStringList &strlist,
bool quickTimeout =
false,
115 void SendHostSystemEvent(
const QString &msg,
const QString &
hostname,
116 const QString &
args);
118 void SetGUIObject(QObject *gui);
119 QObject *GetGUIObject(
void);
120 QObject *GetGUIContext(
void);
121 bool HasGUI(
void)
const;
122 bool IsUIThread(
void);
128 bool IsDatabaseIgnored(
void)
const;
130 void SaveSetting(
const QString &key,
int newValue);
131 void SaveSetting(
const QString &key,
const QString &newValue);
132 QString GetSetting(
const QString &key,
const QString &defaultval =
"");
134 template <
typename T>
135#if HAVE_IS_DURATION_V
136 typename std::enable_if_t<std::chrono::__is_duration_v<T>,
void>
138 typename std::enable_if_t<std::chrono::__is_duration<T>::value,
void>
141 { SaveSetting(key,
static_cast<int>(newValue.count())); }
143 bool SaveSettingOnHost(
const QString &key,
const QString &newValue,
144 const QString &host);
146 { SaveSetting(key,
static_cast<int>(newValue)); }
149 bool GetBoolSetting(
const QString &key,
bool defaultval =
false);
150 int GetNumSetting(
const QString &key,
int defaultval = 0);
151 template <
typename T>
152#if HAVE_IS_DURATION_V
153 typename std::enable_if_t<std::chrono::__is_duration_v<T>, T>
155 typename std::enable_if_t<std::chrono::__is_duration<T>::value, T>
158 {
return T(GetNumSetting(key,
static_cast<int>(defaultval.count()))); }
161 double GetFloatSetting(
const QString &key,
double defaultval = 0.0);
162 void GetResolutionSetting(
const QString &
type,
int &width,
int &height,
163 double& forced_aspect,
double &refresh_rate,
165 void GetResolutionSetting(
const QString &
type,
int &width,
int &height,
168 QString GetSettingOnHost(
const QString &key,
const QString &host,
169 const QString &defaultval =
"");
170 bool GetBoolSettingOnHost(
const QString &key,
const QString &host,
171 bool defaultval =
false);
172 int GetNumSettingOnHost(
const QString &key,
const QString &host,
175 int defaultval) =
delete;
177 bool defaultval =
false) =
delete;
178 double GetFloatSettingOnHost(
const QString &key,
const QString &host,
179 double defaultval = 0.0);
181 QString GetBackendServerIP(
void);
182 QString GetBackendServerIP(
const QString &host);
183 QString GetBackendServerIP4(
void);
184 QString GetBackendServerIP4(
const QString &host);
185 QString GetBackendServerIP6(
void);
186 QString GetBackendServerIP6(
const QString &host);
187 QString GetMasterServerIP(
void);
188 static int GetMasterServerPort(
void);
189 int GetMasterServerStatusPort(
void);
190 int GetBackendServerPort(
void);
191 int GetBackendServerPort(
const QString &host);
192 static void ClearBackendServerPortCache();
193 int GetBackendStatusPort(
void);
194 int GetBackendStatusPort(
const QString &host);
197 bool GetScopeForAddress(QHostAddress &addr)
const;
198 void SetScopeForAddress(
const QHostAddress &addr);
199 void SetScopeForAddress(
const QHostAddress &addr,
int scope);
200 enum ResolveType : std::int8_t { ResolveAny = -1, ResolveIPv4 = 0, ResolveIPv6 = 1 };
201 QString resolveSettingAddress(
const QString &name,
202 const QString &host = QString(),
203 ResolveType
type = ResolveAny,
204 bool keepscope =
false);
205 static QString resolveAddress(
const QString &host,
206 ResolveType
type = ResolveAny,
207 bool keepscope =
false) ;
208 bool CheckSubnet(
const QAbstractSocket *socket);
209 bool CheckSubnet(
const QHostAddress &peer);
210 bool IsLocalSubnet(
const QHostAddress &peer,
bool log);
213 void ActivateSettingsCache(
bool activate =
true);
214 void OverrideSettingForSession(
const QString &key,
const QString &value);
215 void ClearOverrideSettingForSession(
const QString &key);
219 void InitPower(
bool Create =
true);
220 void InitLocale(
void);
221 void ReInitLocale(
void);
223 QLocale GetQLocale(
void);
224 void SaveLocaleDefaults(
void);
225 QString GetLanguage(
void);
226 QString GetLanguageAndVariant(
void);
227 void ResetLanguage(
void);
228 QString GetAudioLanguage(
void);
229 QString GetAudioLanguageAndVariant(
void);
230 void ResetAudioLanguage(
void);
231 void ResetSockets(
void);
243 template <
class OBJ,
typename SLOT>
244 typename std::enable_if_t<std::is_member_function_pointer_v<SLOT>,
void>
247 RegisterForPlayback(qobject_cast<QObject*>(sender),
251 void UnregisterForPlayback(QObject *sender);
252 void WantingPlayback(QObject *sender);
253 bool InWantingPlayback(
void);
254 void TVInWantingPlayback(
bool b);
259 static bool TestPluginVersion(
const QString &name,
const QString &libversion,
260 const QString &pluginversion);
266 void SetExiting(
bool exiting =
true);
267 bool IsExiting(
void);
269 void RegisterFileForWrite(
const QString &
file, uint64_t size = 0LL);
270 void UnregisterFileForWrite(
const QString &
file);
271 bool IsRegisteredFileForWrite(
const QString &
file);
274 void setTestIntSettings(QMap<QString,int>& overrides);
275 void setTestFloatSettings(QMap<QString,double>& overrides);
276 void setTestStringSettings(QMap<QString,QString>& overrides);
279 void WaitUntilSignals(std::vector<CoreWaitInfo> & sigs)
const;
283 emit TVPlaybackSought();}
317 bool m_dvbv3 {
false};
static TransMythUICheckBoxSetting * IsMasterBackend()
static int ClearSettingsCache(const MythUtilCommandLineParser &)
static int SendEvent(const MythUtilCommandLineParser &cmdline)
static int SendSystemEvent(const MythUtilCommandLineParser &cmdline)
DB connection pool, used by MSqlQuery. Do not use directly.
This class contains the runtime context for MythTV.
void emitTVPlaybackStarted(void)
void TVPlaybackAboutToStart(void)
void emitTVPlaybackSought(qint64 position)
void emitTVPlaybackStopped(void)
QMap< QString, QString > m_testOverrideStrings
void TVPlaybackSought(qint64 position)
QMap< QString, double > m_testOverrideFloats
void SaveBoolSetting(const QString &key, bool newValue)
bool GetNumSettingOnHost(const QString &key, const QString &host, bool defaultval=false)=delete
void connected(MythSocket *sock) override
static QHash< QString, int > s_serverPortCache
std::enable_if_t< std::chrono::__is_duration< T >::value, void > SaveDurSetting(const QString &key, T newValue)
void TVPlaybackAborted(void)
void emitTVPlaybackUnpaused(void)
void TVPlaybackPaused(void)
void TVPlaybackSought(void)
void TVPlaybackStopped(void)
void SetEventSocket(MythSocket *eventSock)
int GetBoolSettingOnHost(const QString &key, const QString &host, int defaultval)=delete
void emitTVPlaybackPaused(void)
void emitTVPlaybackAborted(void)
int GetBoolSetting(const QString &key, int defaultval)=delete
bool GetDVBv3(void) const
void SetDVBv3(bool dvbv3)
void TVPlaybackPlaying(void)
bool GetNumSetting(const QString &key, bool defaultvalue)=delete
void emitTVPlaybackPlaying(void)
void(QObject::*)(void) PlaybackStartCb
QMap< QString, int > m_testOverrideInts
void SetServerSocket(MythSocket *serverSock)
std::enable_if_t< std::is_member_function_pointer_v< SLOT >, void > RegisterForPlayback(OBJ *sender, SLOT method)
void TVPlaybackUnpaused(void)
void connectionFailed(MythSocket *sock) override
void TVPlaybackStarted(void)
std::enable_if_t< std::chrono::__is_duration< T >::value, T > GetDurSetting(const QString &key, T defaultval=T::zero())
This class is used as a container for messages.
Superclass for making an object have a set of listeners.
void dispatch(const MythEvent &event)
Dispatch an event to all listeners.
This is an generic interface to a program scheduler.
We use digest authentication because it protects the password over unprotected networks.
virtual void readyRead(MythSocket *)=0
virtual void connectionClosed(MythSocket *)=0
Class for communcating between myth backends and frontends.
static const iso6937table * d
static int SendMessage(const MythUtilCommandLineParser &cmdline)
void(MythCoreContext::*)(void) CoreWaitSigFn
MBASE_PUBLIC MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
static constexpr std::chrono::milliseconds kMythSocketLongTimeout
None log(str msg, int level=LOGDEBUG)