2 * uclient - ustream based protocol client library
4 * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 #ifndef __UCLIENT_INTERNAL_H
19 #define __UCLIENT_INTERNAL_H
23 struct uclient_backend
{
24 const char * const * prefix
;
26 struct uclient
*(*alloc
)(void);
27 void (*free
)(struct uclient
*cl
);
28 void (*update_proxy_url
)(struct uclient
*cl
);
29 void (*update_url
)(struct uclient
*cl
);
31 int (*connect
)(struct uclient
*cl
);
32 int (*request
)(struct uclient
*cl
);
33 void (*disconnect
)(struct uclient
*cl
);
35 int (*read
)(struct uclient
*cl
, char *buf
, unsigned int len
);
36 int (*write
)(struct uclient
*cl
, const char *buf
, unsigned int len
);
39 void uclient_backend_set_error(struct uclient
*cl
, int code
);
40 void uclient_backend_set_eof(struct uclient
*cl
);
41 void uclient_backend_reset_state(struct uclient
*cl
);
42 struct uclient_url
*uclient_get_url(const char *url_str
, const char *auth_str
);