/* # Copyright (c) 2009 - OpenSLX Project, Computer Center University of Freiburg # # This program is free software distributed under the GPL version 2. # See http://openslx.org/COPYING # # If you have any feedback please consult http://openslx.org/feedback and # send your suggestions, praise, or complaints to feedback@openslx.org # # General information about OpenSLX can be found at http://openslx.org/ # ----------------------------------------------------------------------------- # src/net/pvsOutgoingMulticastTransfer.h # - wrap McastSender functionality in PVS daemon # ----------------------------------------------------------------------------- */ #ifndef PVSOUTGOINGMULTICASTTRANSFER_H_ #define PVSOUTGOINGMULTICASTTRANSFER_H_ #include #include #include #include class QFile; class QTimer; class McastConfiguration; class McastPGMSocket; class McastSender; class PVSOutgoingMulticastTransfer : public QObject { Q_OBJECT public: PVSOutgoingMulticastTransfer(QString senderName, quint64 id, QString filename, QObject* parent = 0); virtual ~PVSOutgoingMulticastTransfer(); quint64 id() const { return _id; } bool isError() const { return _error; } QString reason() const { return _reason; } signals: void started(qulonglong id); void progress(qulonglong id, qulonglong bytes, qulonglong of); void allSent(qulonglong id); void finished(qulonglong id); void failed(qulonglong id, QString const reason); void announce(PVSMsg announcement); private slots: void senderProgress(quint64 bytes); void senderFinished(); void reportTimeout(); void doStart(); void prepare(); public slots: void start(); void abort(); void retry(); private: QFile* _file; quint64 _length; quint64 _progress; McastConfiguration* _config; McastPGMSocket* _socket; McastSender* _sender; QTimer* _progressTimer; QTimer* _prepareTimer; QString _senderName; quint64 _id; bool _error; QString _reason; bool _socketInacceptable; void error(QString const& reason); }; #endif /* PVSOUTGOINGMULTICASTTRANSFER_H_ */