1/* 2 * Copyright 2010 Haiku Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _B_URL_SYNCHRONOUS_REQUEST_H_ 6#define _B_URL_SYNCHRONOUS_REQUEST_H_ 7 8 9#include <UrlRequest.h> 10#include <UrlProtocolListener.h> 11 12 13class BUrlSynchronousRequest : public BUrlRequest, public BUrlProtocolListener { 14public: 15 BUrlSynchronousRequest(BUrl& url); 16 virtual ~BUrlSynchronousRequest() { }; 17 18 // Synchronous wait 19 virtual status_t Perform(); 20 virtual status_t WaitUntilCompletion(); 21 22 // Protocol hooks 23 virtual void ConnectionOpened(BUrlProtocol* caller); 24 virtual void HostnameResolved(BUrlProtocol* caller, 25 const char* ip); 26 virtual void ResponseStarted(BUrlProtocol* caller); 27 virtual void HeadersReceived(BUrlProtocol* caller); 28 virtual void DataReceived(BUrlProtocol* caller, 29 const char* data, ssize_t size); 30 virtual void DownloadProgress(BUrlProtocol* caller, 31 ssize_t bytesReceived, ssize_t bytesTotal); 32 virtual void UploadProgress(BUrlProtocol* caller, 33 ssize_t bytesSent, ssize_t bytesTotal); 34 virtual void RequestCompleted(BUrlProtocol* caller, 35 bool success); 36 37 38protected: 39 bool fRequestComplete; 40}; 41 42 43#endif // _B_URL_SYNCHRONOUS_REQUEST_H_ 44