|
|
@ -10,7 +10,7 @@ |
|
|
|
|
|
|
|
namespace QCP { |
|
|
|
class LIBQCPSHARED_EXPORT Share; |
|
|
|
class LIBQCPSHARED_EXPORT WatchShare; |
|
|
|
class LIBQCPSHARED_EXPORT ShareDetails; |
|
|
|
class LIBQCPSHARED_EXPORT Browse; |
|
|
|
} |
|
|
|
|
|
|
@ -23,6 +23,7 @@ namespace QCP { |
|
|
|
friend class QCP::Share; |
|
|
|
|
|
|
|
struct ShareData { |
|
|
|
QCP::ShareDetails *details; |
|
|
|
void *data; |
|
|
|
}; |
|
|
|
|
|
|
@ -53,24 +54,52 @@ namespace QCP { |
|
|
|
Avahi::Browse *m_av_browse; |
|
|
|
}; |
|
|
|
|
|
|
|
class LIBQCPSHARED_EXPORT ShareDetails { |
|
|
|
protected: |
|
|
|
ShareDetails(const Avahi::Service &service) : m_service(service) { } |
|
|
|
|
|
|
|
public: |
|
|
|
virtual ~ShareDetails() { } |
|
|
|
|
|
|
|
virtual QString methodName() = 0; |
|
|
|
|
|
|
|
Avahi::Service service() const { return m_service; } |
|
|
|
|
|
|
|
protected: |
|
|
|
Avahi::Service m_service; |
|
|
|
}; |
|
|
|
|
|
|
|
class LIBQCPSHARED_EXPORT Share { |
|
|
|
private: |
|
|
|
friend class QCP::Browse; |
|
|
|
friend class QCP::WatchShare; |
|
|
|
|
|
|
|
public: |
|
|
|
inline Share(QCP::Browse *browse, Avahi::Service service) : m_browse(browse), m_service(service) { } |
|
|
|
inline Share(Avahi::Service service) : m_service(service) { } |
|
|
|
inline Share() { } |
|
|
|
|
|
|
|
public: |
|
|
|
Avahi::Service avahiService() const { return m_service; } |
|
|
|
|
|
|
|
void* data() const { Browse::ShareData *sd = Browse::shareData(m_service); return sd ? sd->data : 0; } |
|
|
|
void setData(void *data) const { Browse::ShareData *sd = Browse::shareData(m_service); if (sd) sd->data = data; } |
|
|
|
inline void* data() const { |
|
|
|
Browse::ShareData *sd = Browse::shareData(m_service); |
|
|
|
return sd ? sd->data : 0; |
|
|
|
} |
|
|
|
inline void setData(void *data) const { |
|
|
|
Browse::ShareData *sd = Browse::shareData(m_service); |
|
|
|
if (sd) sd->data = data; |
|
|
|
} |
|
|
|
|
|
|
|
inline QCP::ShareDetails* details() const { |
|
|
|
Browse::ShareData *sd = Browse::shareData(m_service); |
|
|
|
return sd ? sd->details : 0; |
|
|
|
} |
|
|
|
|
|
|
|
private: |
|
|
|
QCP::Browse *m_browse; |
|
|
|
Avahi::Service m_service; |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
Q_DECLARE_METATYPE(QCP::Share); |
|
|
|
Q_DECLARE_METATYPE(QList<QCP::Share>); |
|
|
|
|
|
|
|
#endif // QCP_H |