⛏️ index : haiku.git

/*
 * 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);

	// Other custom stuff

			void						UpdateSize();

	friend class FileListener;
private:
	BPrivate::Network::BUrlRequest*		fReq;
	FileListener*						fListener;
	thread_id							fReqThread;

	BUrl								fUrl;
	off_t								fTotalSize;
	bool								fIsMutable;
};

#endif