UrlProtocolDispatchingListener.h revision ed31589c
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	B_URL_PROTOCOL_CERTIFICATE_VERIFICATION_FAILED,
31	B_URL_PROTOCOL_DEBUG_MESSAGE
32};
33
34
35class BUrlProtocolDispatchingListener : public BUrlProtocolListener {
36public:
37								BUrlProtocolDispatchingListener(
38									BHandler* handler);
39								BUrlProtocolDispatchingListener(
40									const BMessenger& messenger);
41	virtual						~BUrlProtocolDispatchingListener();
42
43	virtual	void				ConnectionOpened(BUrlRequest* caller);
44	virtual void				HostnameResolved(BUrlRequest* caller,
45									const char* ip);
46	virtual void				ResponseStarted(BUrlRequest* caller);
47	virtual void				HeadersReceived(BUrlRequest* caller);
48	virtual void				DataReceived(BUrlRequest* caller,
49									const char* data, off_t position,
50									ssize_t size);
51	virtual	void				DownloadProgress(BUrlRequest* caller,
52									ssize_t bytesReceived, ssize_t bytesTotal);
53	virtual void				UploadProgress(BUrlRequest* caller,
54									ssize_t bytesSent, ssize_t bytesTotal);
55	virtual void				RequestCompleted(BUrlRequest* caller,
56									bool success);
57	virtual void				DebugMessage(BUrlRequest* caller,
58									BUrlProtocolDebugMessage type,
59									const char* text);
60	virtual bool				CertificateVerificationFailed(
61									BUrlRequest* caller,
62									BCertificate& certificate,
63									const char* message);
64
65private:
66			void				_SendMessage(BMessage* message,
67									int8 notification, BUrlRequest* caller);
68
69private:
70			BMessenger	 		fMessenger;
71};
72
73#endif // _B_URL_PROTOCOL_DISPATCHING_LISTENER_H_
74
75