1/* 2 * Copyright 2010 Haiku Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Christophe Huriaux, c.huriaux@gmail.com 7 */ 8 9#include <cstdio> 10 11#include <UrlSynchronousRequest.h> 12 13using namespace BPrivate::Network; 14 15 16#define PRINT(x) printf x; 17 18 19BUrlSynchronousRequest::BUrlSynchronousRequest(BUrlRequest& request) 20 : 21 BUrlRequest(request.Url(), request.Output(), NULL, request.Context(), 22 "BUrlSynchronousRequest", request.Protocol()), 23 fRequestComplete(false), 24 fWrappedRequest(request) 25{ 26} 27 28 29status_t 30BUrlSynchronousRequest::Perform() 31{ 32 fWrappedRequest.SetListener(this); 33 fRequestComplete = false; 34 35 thread_id worker = fWrappedRequest.Run(); 36 // TODO something to do with the thread_id maybe ? 37 38 if (worker < B_OK) 39 return worker; 40 else 41 return B_OK; 42} 43 44 45status_t 46BUrlSynchronousRequest::WaitUntilCompletion() 47{ 48 while (!fRequestComplete) 49 snooze(10000); 50 51 return B_OK; 52} 53 54 55void 56BUrlSynchronousRequest::ConnectionOpened(BUrlRequest*) 57{ 58 PRINT(("SynchronousRequest::ConnectionOpened()\n")); 59} 60 61 62void 63BUrlSynchronousRequest::HostnameResolved(BUrlRequest*, const char* ip) 64{ 65 PRINT(("SynchronousRequest::HostnameResolved(%s)\n", ip)); 66} 67 68 69void 70BUrlSynchronousRequest::ResponseStarted(BUrlRequest*) 71{ 72 PRINT(("SynchronousRequest::ResponseStarted()\n")); 73} 74 75 76void 77BUrlSynchronousRequest::HeadersReceived(BUrlRequest*) 78{ 79 PRINT(("SynchronousRequest::HeadersReceived()\n")); 80} 81 82 83void 84BUrlSynchronousRequest::BytesWritten(BUrlRequest* caller, size_t bytesWritten) 85{ 86 PRINT(("SynchronousRequest::BytesWritten(%" B_PRIdSSIZE ")\n", 87 bytesWritten)); 88} 89 90 91void 92BUrlSynchronousRequest::DownloadProgress(BUrlRequest*, 93 off_t bytesReceived, off_t bytesTotal) 94{ 95 PRINT(("SynchronousRequest::DownloadProgress(%" B_PRIdOFF ", %" B_PRIdOFF 96 ")\n", bytesReceived, bytesTotal)); 97} 98 99 100void 101BUrlSynchronousRequest::UploadProgress(BUrlRequest*, off_t bytesSent, 102 off_t bytesTotal) 103{ 104 PRINT(("SynchronousRequest::UploadProgress(%" B_PRIdOFF ", %" B_PRIdOFF 105 ")\n", bytesSent, bytesTotal)); 106} 107 108 109void 110BUrlSynchronousRequest::RequestCompleted(BUrlRequest* caller, bool success) 111{ 112 PRINT(("SynchronousRequest::RequestCompleted(%s) : %s\n", (success?"true":"false"), 113 strerror(caller->Status()))); 114 fRequestComplete = true; 115} 116