UrlProtocolDispatchingListener.h revision cfc4b623
1/*
2 * Copyright 2010 Haiku Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _B_URL_PROTOCOL_DISPATCHING_LISTENER_H_
6#define _B_URL_PROTOCOL_DISPATCHING_LISTENER_H_
7
8
9#include <Messenger.h>
10#include <Message.h>
11#include <UrlProtocolListener.h>
12
13
14//! To be in AppTypes.h
15enum {
16	B_URL_PROTOCOL_NOTIFICATION = '_UPN'
17};
18
19
20// Notification types
21enum {
22	B_URL_PROTOCOL_CONNECTION_OPENED,
23	B_URL_PROTOCOL_HOSTNAME_RESOLVED,
24	B_URL_PROTOCOL_RESPONSE_STARTED,
25	B_URL_PROTOCOL_HEADERS_RECEIVED,
26	B_URL_PROTOCOL_DATA_RECEIVED,
27	B_URL_PROTOCOL_DOWNLOAD_PROGRESS,
28	B_URL_PROTOCOL_UPLOAD_PROGRESS,
29	B_URL_PROTOCOL_REQUEST_COMPLETED
30};
31
32
33class BUrlProtocolDispatchingListener : public BUrlProtocolListener {
34public:
35								BUrlProtocolDispatchingListener(
36									BHandler* handler);
37								BUrlProtocolDispatchingListener(
38									const BMessenger& messenger);
39	virtual						~BUrlProtocolDispatchingListener();
40
41	virtual	void				ConnectionOpened(BUrlRequest* caller);
42	virtual void				HostnameResolved(BUrlRequest* caller,
43									const char* ip);
44	virtual void				ResponseStarted(BUrlRequest* caller);
45	virtual void				HeadersReceived(BUrlRequest* caller);
46	virtual void				DataReceived(BUrlRequest* caller,
47									const char* data, off_t position,
48									ssize_t size);
49	virtual	void				DownloadProgress(BUrlRequest* caller,
50									ssize_t bytesReceived, ssize_t bytesTotal);
51	virtual void				UploadProgress(BUrlRequest* caller,
52									ssize_t bytesSent, ssize_t bytesTotal);
53	virtual void				RequestCompleted(BUrlRequest* caller,
54									bool success);
55
56private:
57			void				_SendMessage(BMessage* message,
58									int8 notification, BUrlRequest* caller);
59
60private:
61			BMessenger	 		fMessenger;
62};
63
64#endif // _B_URL_PROTOCOL_DISPATCHING_LISTENER_H_
65
66