Rev 5685 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5685 | leency | 1 | |
6001 | leency | 2 | STATE_NOT_STARTED, |
3 | STATE_IN_PROGRESS, |
||
4 | STATE_COMPLETED |
||
5 | }; |
||
6 | |||
5685 | leency | 7 | |
6001 | leency | 8 | char url[10000]; |
9 | int data_downloaded_size, data_full_size; |
||
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; |
||
18 | |||
5685 | leency | 19 | |
6001 | leency | 20 | { |
5685 | leency | 21 | state = STATE_IN_PROGRESS; |
6001 | leency | 22 | strcpy(#url, _url); //need to replace my malloc() |
23 | http_get stdcall (#url, 0, 0, #accept_language); |
||
24 | http_transfer = EAX; |
||
25 | return http_transfer; |
||
26 | } |
||
5685 | leency | 27 | |
28 | |||
6001 | leency | 29 | { |
5685 | leency | 30 | state = STATE_NOT_STARTED; |
6001 | leency | 31 | if (http_transfer!=0) |
32 | { |
||
5685 | leency | 33 | EAX = http_transfer; |
6001 | leency | 34 | EAX = EAX.http_msg.content_ptr; // get pointer to data |
5685 | leency | 35 | $push EAX // save it on the stack |
6001 | leency | 36 | http_free stdcall (http_transfer); // abort connection |
37 | $pop EAX |
||
38 | mem_Free(EAX); // free data |
||
5685 | leency | 39 | http_transfer=0; |
6001 | leency | 40 | bufsize = 0; |
41 | bufpointer = mem_Free(bufpointer); |
||
42 | } |
||
5685 | leency | 43 | data_downloaded_size = data_full_size = 0; |
6001 | leency | 44 | } |
5685 | leency | 45 | |
46 | |||
6001 | leency | 47 | { |
5685 | leency | 48 | state = STATE_COMPLETED; |
6001 | leency | 49 | ESI = http_transfer; |
50 | bufpointer = ESI.http_msg.content_ptr; |
||
51 | bufsize = ESI.http_msg.content_received; |
||
52 | http_free stdcall (http_transfer); |
||
53 | http_transfer=0; |
||
54 | } |
||
5685 | leency | 55 | |
56 | |||
6001 | leency | 57 | { |
5685 | leency | 58 | dword receive_result; |
6001 | leency | 59 | if (http_transfer <= 0) return false; |
60 | http_receive stdcall (http_transfer); |
||
61 | receive_result = EAX; |
||
62 | EDI = http_transfer; |
||
63 | data_full_size = EDI.http_msg.content_length; |
||
64 | data_downloaded_size = EDI.http_msg.content_received; |
||
65 | if (receive_result == 0) Completed(); |
||
66 | return true; |
||
67 | }=> |
||
68 |