1#ifndef MYTHAIRPLAYSERVER_H
2#define MYTHAIRPLAYSERVER_H
5#include <QRecursiveMutex>
23 const QString& nonce,
const QString& password,
73 static bool Create(
void);
74 static void Cleanup(
void);
76 {
return gMythAirplayServer; }
79 m_lock(new QRecursiveMutex())
85 void newAirplayConnection(QTcpSocket *client);
86 void deleteConnection();
94 static QByteArray StatusToString(
uint16_t status);
96 static void GetPlayerStatus(
bool &playing,
float &speed,
97 double &position,
double &duration,
99 static QString GetMacAddress();
100 bool SendReverseEvent(QByteArray &session,
AirplayEvent event);
101 void SendResponse(QTcpSocket *socket,
102 uint16_t status,
const QByteArray& header,
103 const QByteArray& content_type,
const QString& body);
105 void deleteConnection(QTcpSocket *socket);
106 void DisconnectAllClients(
const QByteArray &session);
107 void StopSession(
const QByteArray &session);
108 void StartPlayback(
const QString &pathname);
109 void StopPlayback(
void);
110 void SeekPosition(uint64_t position);
111 void PausePlayback(
void);
112 void UnpausePlayback(
void);
113 void HideAllPhotos(
void);
121 QString m_name {
"MythTV"};
123 bool m_valid {
false};
124 QRecursiveMutex *m_lock {
nullptr};
125 int m_setupPort {5100};
137 QTimer *m_serviceRefresh {
nullptr};
AirplayConnection()=default
QTcpSocket * m_controlSocket
QTcpSocket * m_reverseSocket
This is a wrapper around QThread that does several additional things.
QHash< QByteArray, AirplayConnection > m_connections
static MythAirplayServer * gMythAirplayServer
QHash< QTcpSocket *, APHTTPRequest * > m_incoming
QList< QTcpSocket * > m_sockets
static MThread * gMythAirplayServerThread
static MythAirplayServer * AirplaySharedInstance(void)
static QRecursiveMutex * gMythAirplayServerMutex
void UnRegister(void *from, int id, bool closeimemdiately=false)
Unregister the client.
Manages a collection of sockets listening on different ports.
static constexpr int AIRPLAY_PORT_RANGE
static constexpr size_t AIRPLAY_HARDWARE_ID_SIZE
QString AirPlayHardwareId(void)
QByteArray DigestMd5Response(const QString &response, const QString &option, const QString &nonce, const QString &password, QByteArray &auth)
QString GenerateNonce(void)
MythNotificationCenter * GetNotificationCenter(void)
def read(device=None, features=[])