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 14namespace BPrivate { 15 16namespace Network { 17 18 19//! To be in AppTypes.h 20enum { 21 B_URL_PROTOCOL_NOTIFICATION = '_UPN' 22}; 23 24 25// Notification types 26enum { 27 B_URL_PROTOCOL_CONNECTION_OPENED, 28 B_URL_PROTOCOL_HOSTNAME_RESOLVED, 29 B_URL_PROTOCOL_RESPONSE_STARTED, 30 B_URL_PROTOCOL_HEADERS_RECEIVED, 31 B_URL_PROTOCOL_BYTES_WRITTEN, 32 B_URL_PROTOCOL_DOWNLOAD_PROGRESS, 33 B_URL_PROTOCOL_UPLOAD_PROGRESS, 34 B_URL_PROTOCOL_REQUEST_COMPLETED, 35 B_URL_PROTOCOL_CERTIFICATE_VERIFICATION_FAILED, 36 B_URL_PROTOCOL_DEBUG_MESSAGE 37}; 38 39 40class BUrlProtocolDispatchingListener : public BUrlProtocolListener { 41public: 42 BUrlProtocolDispatchingListener( 43 BHandler* handler); 44 BUrlProtocolDispatchingListener( 45 const BMessenger& messenger); 46 virtual ~BUrlProtocolDispatchingListener(); 47 48 virtual void ConnectionOpened(BUrlRequest* caller); 49 virtual void HostnameResolved(BUrlRequest* caller, 50 const char* ip); 51 virtual void ResponseStarted(BUrlRequest* caller); 52 53 virtual void HeadersReceived(BUrlRequest* caller); 54 virtual void BytesWritten(BUrlRequest* caller, 55 size_t bytesWritten); 56 virtual void DownloadProgress(BUrlRequest* caller, 57 off_t bytesReceived, off_t bytesTotal); 58 virtual void UploadProgress(BUrlRequest* caller, 59 off_t bytesSent, off_t bytesTotal); 60 61 virtual void RequestCompleted(BUrlRequest* caller, 62 bool success); 63 virtual void DebugMessage(BUrlRequest* caller, 64 BUrlProtocolDebugMessage type, 65 const char* text); 66 virtual bool CertificateVerificationFailed( 67 BUrlRequest* caller, 68 BCertificate& certificate, 69 const char* message); 70 71private: 72 void _SendMessage(BMessage* message, 73 int8 notification, 74 BUrlRequest* caller); 75 76private: 77 BMessenger fMessenger; 78}; 79 80 81} // namespace Network 82 83} // namespace BPrivate 84 85#endif // _B_URL_PROTOCOL_DISPATCHING_LISTENER_H_ 86