summaryrefslogtreecommitdiff
path: root/desktop/fetch.h
blob: f9366c8fa4088e72a89b2b5f558600fdc074d314 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
 * $Id: fetch.h,v 1.2 2003/01/06 00:04:43 bursa Exp $
 */

#ifndef _NETSURF_DESKTOP_FETCH_H_
#define _NETSURF_DESKTOP_FETCH_H_

#include "libxml/HTMLparser.h"
#include "netsurf/render/box.h"
#include "netsurf/render/css.h"
#include "netsurf/desktop/browser.h"
#include <time.h>

typedef enum {fetch_CURL} fetch_type;
typedef enum {fetch_STATUS_SEND, fetch_STATUS_WAIT, fetch_STATUS_FETCH, fetch_STATUS_FINISH, fetch_DELETED} fetch_status;

typedef int fetch_flags;
#define fetch_DO_NOT_CHECK_CACHE       ((fetch_flags) 1);
#define fetch_DO_NOT_STORE_IN_CACHE    ((fetch_flags) 2);

struct fetch_request {
  enum {REQUEST_FROM_BROWSER} type;
  union {struct browser_window* browser;} requestor;
};

struct fetch
{
  char* location;
  fetch_type type;
  fetch_flags flags;

  fetch_status status;
  int bytes_fetched;
  int bytes_total;

  struct fetch_request* request;

  time_t start_time;

  struct fetch* next;
};

struct fetch* create_fetch(char* location, char* previous, fetch_flags f, struct fetch_request* r);
void fetch_destroy(struct fetch* f);
struct fetch* fetch_cancel(struct fetch* f);
void fetch_receive(struct fetch* f, int amount, char* bytes);
struct fetch* fetch_poll(struct fetch* f);

#endif