* Copyright 2016, Dario Casalinuovo
* Distributed under the terms of the MIT License.
*/
#ifndef _HTTP_MEDIA_IO_H
#define _HTTP_MEDIA_IO_H
#include <AdapterIO.h>
#include <FileRequest.h>
#include <Url.h>
#include <UrlProtocolAsynchronousListener.h>
class FileListener;
class HTTPMediaIO : public BAdapterIO {
public:
HTTPMediaIO(BUrl url);
virtual ~HTTPMediaIO();
virtual void GetFlags(int32* flags) const;
virtual ssize_t WriteAt(off_t position,
const void* buffer, size_t size);
virtual status_t SetSize(off_t size);
virtual status_t Open();
virtual bool IsRunning() const;
protected:
virtual status_t SeekRequested(off_t position);
void UpdateSize();
friend class FileListener;
private:
BPrivate::Network::BUrlRequest* fReq;
FileListener* fListener;
thread_id fReqThread;
BUrl fUrl;
off_t fTotalSize;
bool fIsMutable;
};
#endif