Rev 5685 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5685 | Rev 6001 | ||
---|---|---|---|
Line -... | Line 1... | ||
- | 1 | enum { |
|
- | 2 | STATE_NOT_STARTED, |
|
- | 3 | STATE_IN_PROGRESS, |
|
- | 4 | STATE_COMPLETED |
|
- | 5 | }; |
|
- | 6 | ||
- | 7 | struct DOWNLOADER { |
|
1 | char DL_URL[10000]; |
8 | char url[10000]; |
- | 9 | int data_downloaded_size, data_full_size; |
|
2 | dword DL_bufpointer, DL_bufsize, DL_http_transfer, DL_http_buffer; |
10 | dword bufpointer, bufsize; |
- | 11 | byte state; |
|
- | 12 | dword http_transfer; |
|
- | 13 | dword Start(); |
|
- | 14 | void Stop(); |
|
- | 15 | void Completed(); |
|
- | 16 | int MonitorProgress(); |
|
- | 17 | } downloader; |
|
Line 3... | Line -... | ||
3 | - | ||
4 | int downloaded_size, full_size; |
- | |
5 | - | ||
6 | byte download_state; |
- | |
7 | enum { STATE_NOT_STARTED, STATE_IN_PROGRESS, STATE_COMPLETED }; |
- | |
8 | - | ||
9 | - | ||
10 | - | ||
11 | 18 | ||
12 | void Downloading_SetDefaults() |
19 | dword DOWNLOADER::Start(dword _url) |
13 | { |
20 | { |
- | 21 | state = STATE_IN_PROGRESS; |
|
- | 22 | strcpy(#url, _url); //need to replace my malloc() |
|
- | 23 | http_get stdcall (#url, 0, 0, #accept_language); |
|
- | 24 | http_transfer = EAX; |
|
14 | downloaded_size = full_size = 0; |
25 | return http_transfer; |
Line 15... | Line 26... | ||
15 | } |
26 | } |
16 | 27 | ||
17 | void Downloading_Stop() |
28 | void DOWNLOADER::Stop() |
18 | { |
29 | { |
19 | download_state = STATE_NOT_STARTED; |
30 | state = STATE_NOT_STARTED; |
20 | if (DL_http_transfer<>0) |
31 | if (http_transfer!=0) |
21 | { |
32 | { |
22 | EAX = DL_http_transfer; |
33 | EAX = http_transfer; |
23 | EAX = EAX.http_msg.content_ptr; // get pointer to data |
34 | EAX = EAX.http_msg.content_ptr; // get pointer to data |
24 | $push EAX // save it on the stack |
35 | $push EAX // save it on the stack |
25 | http_free stdcall (DL_http_transfer); // abort connection |
36 | http_free stdcall (http_transfer); // abort connection |
26 | $pop EAX |
37 | $pop EAX |
27 | mem_Free(EAX); // free data |
38 | mem_Free(EAX); // free data |
28 | DL_http_transfer=0; |
39 | http_transfer=0; |
29 | DL_bufsize = 0; |
- | |
30 | DL_bufpointer = mem_Free(DL_bufpointer); |
40 | bufsize = 0; |
- | 41 | bufpointer = mem_Free(bufpointer); |
|
31 | Downloading_SetDefaults(); |
42 | } |
Line 32... | Line 43... | ||
32 | } |
43 | data_downloaded_size = data_full_size = 0; |
33 | } |
44 | } |
34 | 45 | ||
- | 46 | void DOWNLOADER::Completed() |
|
- | 47 | { |
|
- | 48 | state = STATE_COMPLETED; |
|
35 | void Downloading_Start() |
49 | ESI = http_transfer; |
36 | { |
50 | bufpointer = ESI.http_msg.content_ptr; |
37 | download_state = STATE_IN_PROGRESS; |
51 | bufsize = ESI.http_msg.content_received; |
Line 38... | Line 52... | ||
38 | http_get stdcall (#DL_URL, 0, 0, #accept_language); |
52 | http_free stdcall (http_transfer); |
39 | DL_http_transfer = EAX; |
53 | http_transfer=0; |
- | 54 | } |
|
- | 55 | ||
- | 56 | int DOWNLOADER::MonitorProgress() |
|
- | 57 | { |
|
40 | } |
58 | dword receive_result; |
41 | 59 | if (http_transfer <= 0) return false; |
|
42 | void Downloading_Completed() |
60 | http_receive stdcall (http_transfer); |
43 | { |
61 | receive_result = EAX; |
44 | ESI = DL_http_transfer; |
62 | EDI = http_transfer; |
45 | DL_bufpointer = ESI.http_msg.content_ptr; |
- | |
46 | DL_bufsize = ESI.http_msg.content_received; |
63 | data_full_size = EDI.http_msg.content_length; |
47 | http_free stdcall (DL_http_transfer); |
64 | data_downloaded_size = EDI.http_msg.content_received; |