Subversion Repositories Kolibri OS

Rev

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;