44 #include "int_sizes.h"
50 #include <sys/types.h>
53 #define LINK_ADDRESS_MAX 48
56 #define LINK_PORT_ANY 0
59 #define LINK_FOREVER ((time_t)INT_MAX)
67 struct link *
link_connect(
const char *addr,
int port, time_t stoptime);
91 struct link *
link_accept(
struct link *master, time_t stoptime);
102 int link_read(
struct link *link,
char *data,
size_t length, time_t stoptime);
113 int link_read_avail(
struct link *link,
char *data,
size_t length, time_t stoptime);
122 int link_write(
struct link *link,
const char *data,
size_t length, time_t stoptime);
132 int link_putlstring(
struct link *link,
const char *str,
size_t len, time_t stoptime);
141 #define link_putstring(l,s,t) (link_putlstring(l,s,strlen(s),t))
150 #define link_putliteral(l,s,t) (link_putlstring(l,s "",((sizeof(s))-1),t))
160 int link_putfstring(
struct link *link,
const char *fmt, time_t stoptime, ...);
170 int link_putvfstring(
struct link *link,
const char *fmt, time_t stoptime, va_list va);
179 int link_usleep(
struct link *link,
int usec,
int reading,
int writing);
205 void link_window_get(
struct link *link,
int *send_window,
int *recv_window);
218 int link_readline(
struct link *link,
char *line,
size_t length, time_t stoptime);
224 int link_fd(
struct link *link);
226 int link_keepalive(
struct link *link,
int onoff);
228 int link_nonblocking(
struct link *link,
int onoff);
246 INT64_T link_stream_to_buffer(
struct link *link,
char **buffer, time_t stoptime);
248 INT64_T link_stream_to_fd(
struct link *link,
int fd, INT64_T length, time_t stoptime);
249 INT64_T link_stream_to_file(
struct link *link, FILE * file, INT64_T length, time_t stoptime);
251 INT64_T link_stream_from_fd(
struct link *link,
int fd, INT64_T length, time_t stoptime);
252 INT64_T link_stream_from_file(
struct link *link, FILE * file, INT64_T length, time_t stoptime);
254 INT64_T link_soak(
struct link *link, INT64_T length, time_t stoptime);
void link_window_get(struct link *link, int *send_window, int *recv_window)
Get the TCP window size actually allocated for this link.
int link_usleep(struct link *link, int usec, int reading, int writing)
Block until a link is readable or writable.
int link_putvfstring(struct link *link, const char *fmt, time_t stoptime, va_list va)
Write formatted data to a connection.
struct link * link
The link to be polled.
Definition: link.h:278
int link_address_remote(struct link *link, char *addr, int *port)
Return the remote address of the link in text format.
struct link * link_accept(struct link *master, time_t stoptime)
Accept one connection.
void link_close(struct link *link)
Close a connection.
Data may be buffered to improve throughput of large transfers.
Definition: link.h:259
struct link * link_connect(const char *addr, int port, time_t stoptime)
Connect to a remote host.
int link_tune(struct link *link, link_tune_t mode)
Tune a link for interactive or bulk performance.
link_tune_t
Options for link performance tuning.
Definition: link.h:257
int link_putfstring(struct link *link, const char *fmt, time_t stoptime,...)
Write formatted data to a connection.
int link_read(struct link *link, char *data, size_t length, time_t stoptime)
Read data from a connection.
int revents
The events returned (LINK_READ or LINK_WRITE)
Definition: link.h:280
int link_fd(struct link *link)
Get the underlying file descriptor of a link.
void link_window_set(int send_window, int recv_window)
Set the TCP window size to be used for all links.
struct link * link_serve_address(const char *addr, int port)
Prepare to accept connections on one network interface.
int link_write(struct link *link, const char *data, size_t length, time_t stoptime)
Write data to a connection.
Data is sent immediately to optimze interactive latency.
Definition: link.h:258
int link_readline(struct link *link, char *line, size_t length, time_t stoptime)
Read a line of text from a link.
struct link * link_serve(int port)
Prepare to accept connections.
int link_read_avail(struct link *link, char *data, size_t length, time_t stoptime)
Read available data from a connection.
int link_poll(struct link_info *array, int nlinks, int msec)
Wait for a activity on a an array of links.
Activity structure passed to link_poll.
Definition: link.h:277
int events
The events to wait for (LINK_READ or LINK_WRITE)
Definition: link.h:279
int link_address_local(struct link *link, char *addr, int *port)
Return the local address of the link in text format.