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 <UrlProtocolAsynchronousListener.h>
13
14
15class FileListener;
16
17class HTTPMediaIO : public BAdapterIO {
18public:
19										HTTPMediaIO(BUrl url);
20	virtual								~HTTPMediaIO();
21
22	virtual void						GetFlags(int32* flags) const;
23
24	virtual	ssize_t						WriteAt(off_t position,
25											const void* buffer, size_t size);
26
27	virtual status_t					SetSize(off_t size);
28
29	virtual status_t					Open();
30
31	virtual bool						IsRunning() const;
32
33protected:
34	virtual	status_t					SeekRequested(off_t position);
35
36	// Other custom stuff
37
38			void						UpdateSize();
39
40	friend class FileListener;
41private:
42	BPrivate::Network::BUrlRequest*		fReq;
43	FileListener*						fListener;
44	thread_id							fReqThread;
45
46	BUrl								fUrl;
47	off_t								fTotalSize;
48	bool								fIsMutable;
49};
50
51#endif
52