1/* 2 * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de> 3 * Copyright 2013, Rene Gollent <rene@gollent.com> 4 * Copyright 2015, Axel D��rfler <axeld@pinc-software.de> 5 * Distributed under the terms of the MIT License. 6 */ 7#ifndef _PACKAGE__PRIVATE__FETCH_FILE_JOB_H_ 8#define _PACKAGE__PRIVATE__FETCH_FILE_JOB_H_ 9 10 11#include <Entry.h> 12#include <File.h> 13#include <String.h> 14 15#ifdef HAIKU_TARGET_PLATFORM_HAIKU 16# include <UrlProtocolListener.h> 17#endif 18 19#include <package/Job.h> 20 21#ifdef HAIKU_TARGET_PLATFORM_HAIKU 22using BPrivate::Network::BUrlProtocolListener; 23using BPrivate::Network::BUrlRequest; 24#endif 25 26 27namespace BPackageKit { 28 29namespace BPrivate { 30 31 32#ifdef HAIKU_TARGET_PLATFORM_HAIKU 33class FetchFileJob : public BJob, public BUrlProtocolListener { 34#else // HAIKU_TARGET_PLATFORM_HAIKU 35class FetchFileJob : public BJob { 36#endif // HAIKU_TARGET_PLATFORM_HAIKU 37 38 typedef BJob inherited; 39 40public: 41 FetchFileJob(const BContext& context, 42 const BString& title, 43 const BString& fileURL, 44 const BEntry& targetEntry); 45 virtual ~FetchFileJob(); 46 47 float DownloadProgress() const; 48 const char* DownloadURL() const; 49 const char* DownloadFileName() const; 50 off_t DownloadBytes() const; 51 off_t DownloadTotalBytes() const; 52 53#ifdef HAIKU_TARGET_PLATFORM_HAIKU 54 virtual void DownloadProgress(BUrlRequest*, 55 off_t bytesReceived, off_t bytesTotal); 56 virtual void RequestCompleted(BUrlRequest* request, 57 bool success); 58#endif 59 60protected: 61 virtual status_t Execute(); 62 virtual void Cleanup(status_t jobResult); 63 64private: 65 BString fFileURL; 66 BEntry fTargetEntry; 67 BFile fTargetFile; 68 status_t fError; 69 float fDownloadProgress; 70 off_t fBytes; 71 off_t fTotalBytes; 72}; 73 74 75} // namespace BPrivate 76 77} // namespace BPackageKit 78 79 80#endif // _PACKAGE__PRIVATE__FETCH_FILE_JOB_H_ 81