summaryrefslogtreecommitdiff
path: root/sys/src/cmd/webfs/dat.h
blob: 3f9ac3f3809adcdff45b3a9c5595956211537203 (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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
typedef struct Url Url;
typedef struct Buq Buq;
typedef struct Buf Buf;
typedef struct Key Key;

typedef struct {
	char	*s1;
	char	*s2;
} Str2;

/* 9p */
typedef struct Req Req;

struct Url
{
	char	*scheme;
	char	*user;
	char	*pass;
	char	*host;
	char	*port;
	char	*path;
	char	*query;
	char	*fragment;
};

struct Buf
{
	Buf	*next;
	uchar	*rp;
	uchar	*ep;
	Req	*wreq;
	uchar	end[];
};

struct Key
{
	Key	*next;
	char	*val;
	char	key[];
};

struct Buq
{
	Ref;
	QLock;

	Url	*url;
	Key	*hdr;
	char	*error;

	int	closed;
	int	limit;
	int	size;
	int	nwq;

	/* write buffers */
	Buf	*bh;
	Buf	**bt;

	/* read requests */
	Req	*rh;
	Req	**rt;

	Rendez	rz;
};

int	debug;
Url	*proxy;
int	timeout;
char	*whitespace;

enum {
	Domlen = 256,
};