22#ifndef CMCP_TRANSPORT_H
23#define CMCP_TRANSPORT_H
49 int (*
read_fn)(cmcp_transport_t *t,
char **out_buf,
size_t *out_len);
59 int (*
write_fn)(cmcp_transport_t *t,
const char *buf,
size_t len);
92 const char *(*request_header_fn)(cmcp_transport_t *t,
const char *name);
100static inline int cmcp_transport_read(cmcp_transport_t *t,
101 char **out_buf,
size_t *out_len) {
102 return t->read_fn(t, out_buf, out_len);
105static inline int cmcp_transport_write(cmcp_transport_t *t,
106 const char *buf,
size_t len) {
107 return t->write_fn(t, buf, len);
110static inline void cmcp_transport_close(cmcp_transport_t *t) {
111 if (t) t->close_fn(t);
114static inline void cmcp_transport_wake(cmcp_transport_t *t) {
115 if (t && t->wake_fn) t->wake_fn(t);
118static inline const char *cmcp_transport_request_header(cmcp_transport_t *t,
120 if (t && t->request_header_fn)
return t->request_header_fn(t, name);
177 unsigned short port);
cmcp_transport_t * cmcp_transport_stdio_new_fds(int read_fd, int write_fd)
cmcp_transport_t * cmcp_transport_http_connect(const char *url)
cmcp_transport_t * cmcp_transport_stdio_new(void)
cmcp_transport_t * cmcp_transport_http_listen(const char *host, unsigned short port)
void(* close_fn)(cmcp_transport_t *t)
int(* read_fn)(cmcp_transport_t *t, char **out_buf, size_t *out_len)
void(* wake_fn)(cmcp_transport_t *t)
int(* write_fn)(cmcp_transport_t *t, const char *buf, size_t len)