xref: /haiku/src/kits/network/libnetservices/UrlSynchronousRequest.cpp (revision 52c4471a3024d2eb81fe88e2c3982b9f8daa5e56)
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 
13 using namespace BPrivate::Network;
14 
15 
16 #define PRINT(x) printf x;
17 
18 
19 BUrlSynchronousRequest::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 
29 status_t
30 BUrlSynchronousRequest::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 
45 status_t
46 BUrlSynchronousRequest::WaitUntilCompletion()
47 {
48 	while (!fRequestComplete)
49 		snooze(10000);
50 
51 	return B_OK;
52 }
53 
54 
55 void
56 BUrlSynchronousRequest::ConnectionOpened(BUrlRequest*)
57 {
58 	PRINT(("SynchronousRequest::ConnectionOpened()\n"));
59 }
60 
61 
62 void
63 BUrlSynchronousRequest::HostnameResolved(BUrlRequest*, const char* ip)
64 {
65 	PRINT(("SynchronousRequest::HostnameResolved(%s)\n", ip));
66 }
67 
68 
69 void
70 BUrlSynchronousRequest::ResponseStarted(BUrlRequest*)
71 {
72 	PRINT(("SynchronousRequest::ResponseStarted()\n"));
73 }
74 
75 
76 void
77 BUrlSynchronousRequest::HeadersReceived(BUrlRequest*)
78 {
79 	PRINT(("SynchronousRequest::HeadersReceived()\n"));
80 }
81 
82 
83 void
84 BUrlSynchronousRequest::BytesWritten(BUrlRequest* caller, size_t bytesWritten)
85 {
86 	PRINT(("SynchronousRequest::BytesWritten(%" B_PRIdSSIZE ")\n",
87 		bytesWritten));
88 }
89 
90 
91 void
92 BUrlSynchronousRequest::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 
100 void
101 BUrlSynchronousRequest::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 
109 void
110 BUrlSynchronousRequest::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