/* # 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/mcast/McastReceiver.h # - implement the receiver-side multicast file transfer protocol -- interface # ----------------------------------------------------------------------------- */ #ifndef MCASTRECEIVER_H_ #define MCASTRECEIVER_H_ #include #include #include #include #include #include #include class McastReceiver : public QObject { Q_OBJECT public: enum Result { RES_OK, RES_ABORTED, RES_OFFSET_MISMATCH, RES_CHECKSUM_MISMATCH, RES_MD5_MISMATCH, RES_CONNECTION_RESET }; McastReceiver(QIODevice* iodev, McastConfiguration* config = 0, QObject* parent = 0); virtual ~McastReceiver(); McastConfiguration* config() { return _config; } static inline bool is_error(Result result) { return result != RES_OK; } signals: void finished(int result); public slots: void start(); private: McastConfiguration* _config; McastPGMSocket* _socket; quint64 _curoffs; bool _closed; QCryptographicHash _hash; QIODevice* _iodev; private slots: void receivedPacket(QByteArray const& bytes); void connectionReset(); void _close(Result result); }; #endif /* MCASTRECEIVER_H_ */