1 /*
2  * Copyright (C) 2015-2020 Alibaba Group Holding Limited
3  *
4  */
5 
6 #ifndef __HTTP_LOAD_H__
7 #define __HTTP_LOAD_H__
8 
9 
10 #ifdef VOICELOUDER_APP
11 #define HTTP_URL_LEN				1024
12 #else
13 #define HTTP_URL_LEN				512
14 #endif
15 #define HTTP_HOSTNAME_LEN			HTTP_URL_LEN
16 
17 #define HTTP_STAT_SUCCESS				200
18 #define HTTP_CODE_BREAKPOINT			206
19 #define HTTP_CODE_PERM_REDIRECT			301
20 #define HTTP_CODE_TEMP_REDIRECT			302
21 
22 #define HTTP_READ_BUFF_SIZE				1024
23 
24 
25 typedef struct {
26 	char *source;
27 	char filename[64];
28 	net_cache_t *nc;
29 } http_dload_t;
30 
31 typedef struct {
32 	char base[HTTP_URL_LEN];
33 	os_file_t fp;
34 	char *content;
35 	char *pos;
36 	char *sub;
37 	int len;
38 	int *seg_offset;
39 	char seg_desc[64];
40 	uint8_t live_stream:1;
41 	int seg_begin;
42 	int seg_index;
43 	int seg_count;
44 	int seg_current;
45 	int duration;
46 	os_mutex_t lock;
47 } hls_t;
48 
49 typedef struct {
50 	uint16_t port;
51 	int sock;
52 	int http_status;
53 	uint16_t https:1;
54 	uint16_t start:1;
55 	uint16_t chunked:1;
56 	uint16_t redirect:1;
57 	uint16_t download:1;
58 	uint16_t cache_on:1;
59 	uint16_t seeking:1;
60 	uint16_t deep_pause:1;
61 	uint16_t force_restart:1;
62 	uint16_t read_paused:1;
63 	int content_length;
64 	int breakpoint_pos;
65 	int load_pos;
66 	int seek_offset;
67 	long long pause_time;
68 	uint32_t host_addr;
69 	char host_name[HTTP_HOSTNAME_LEN];
70 	char uri[HTTP_URL_LEN];
71 	char url[HTTP_URL_LEN];
72 	char redirect_url[HTTP_URL_LEN];
73 	http_dload_t dload;
74 	net_cache_t *nc;
75 	hls_t *hls;
76 	os_task_t download_task;
77 	void *priv;
78 } http_loader_t;
79 
80 
81 #endif /* __HTTP_LOAD_H__ */
82