xref: /haiku/src/add-ons/media/plugins/http_streamer/HTTPMediaIO.h (revision d1f885b435e9892ac028f4be2b80536b9dd37413)
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