1 /* 2 * Copyright 2016, Dario Casalinuovo 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _HTTP_MEDIA_IO_H 6 #define _HTTP_MEDIA_IO_H 7 8 9 #include <AdapterIO.h> 10 #include <FileRequest.h> 11 #include <Url.h> 12 #include <UrlContext.h> 13 #include <UrlProtocolAsynchronousListener.h> 14 15 using BCodecKit::BAdapterIO; 16 using BCodecKit::BInputAdapter; 17 18 19 class FileListener; 20 21 class HTTPMediaIO : public BAdapterIO { 22 public: 23 HTTPMediaIO(BUrl url); 24 virtual ~HTTPMediaIO(); 25 26 virtual void GetFlags(int32* flags) const; 27 28 virtual ssize_t WriteAt(off_t position, 29 const void* buffer, size_t size); 30 31 virtual status_t SetSize(off_t size); 32 33 virtual status_t Open(); 34 35 virtual bool IsRunning() const; 36 37 protected: 38 virtual status_t SeekRequested(off_t position); 39 40 // Other custom stuff 41 42 void UpdateSize(); 43 44 friend class FileListener; 45 private: 46 BUrlRequest* fReq; 47 FileListener* fListener; 48 thread_id fReqThread; 49 50 BUrl fUrl; 51 off_t fTotalSize; 52 bool fIsMutable; 53 }; 54 55 #endif 56