Subversion Repositories Kolibri OS

Rev

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