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