207 |
mateuszvis |
1 |
/*
|
|
|
2 |
* This file is part of the pkgnet package - the SvarDOS package manager.
|
1133 |
mateusz.vi |
3 |
* Copyright (C) Mateusz Viste 2013-2022
|
207 |
mateuszvis |
4 |
*/
|
|
|
5 |
|
|
|
6 |
|
|
|
7 |
#ifndef libtcp_hdr
|
|
|
8 |
#define libtcp_hdr
|
|
|
9 |
|
333 |
mateuszvis |
10 |
struct net_tcpsocket; /* opaque struct, exact implementation in net.c */
|
207 |
mateuszvis |
11 |
|
885 |
mateusz.vi |
12 |
/* resolves name and fills resovled addr into ip. on failure it retries r times
|
|
|
13 |
* (r=0 means "try only once"). returns 0 on success. */
|
|
|
14 |
int net_dnsresolve(char *ip, const char *name, int r);
|
207 |
mateuszvis |
15 |
|
|
|
16 |
/* must be called before using libtcp. returns 0 on success, or non-zero if network subsystem is not available. */
|
|
|
17 |
int net_init(void);
|
|
|
18 |
|
|
|
19 |
/* initiates a connection to an IP host and returns a socket pointer (or NULL
|
|
|
20 |
* on error) - note that connection is NOT established at this point!
|
1132 |
mateusz.vi |
21 |
* use net_isconnected() to know when the connection is connected.
|
|
|
22 |
* buffsz is the size of the TCP buffer that will be allocated by net_connect. */
|
|
|
23 |
struct net_tcpsocket *net_connect(const char *ip, unsigned short port, unsigned short buffsz);
|
207 |
mateuszvis |
24 |
|
|
|
25 |
/* checks whether or not a socket is connected. returns:
|
|
|
26 |
* 0 = not connected,
|
|
|
27 |
* 1 = connected
|
329 |
mateuszvis |
28 |
* -1 = error */
|
|
|
29 |
int net_isconnected(struct net_tcpsocket *s);
|
207 |
mateuszvis |
30 |
|
|
|
31 |
/* Sends data on socket 'socket'.
|
|
|
32 |
Returns the number of bytes sent on success, and <0 otherwise. The error code can be translated into a human error message via libtcp_strerr(). */
|
329 |
mateuszvis |
33 |
int net_send(struct net_tcpsocket *socket, const void *line, long len);
|
207 |
mateuszvis |
34 |
|
|
|
35 |
/* Reads data from socket 'sock' and write it into buffer 'buff', until end of connection. Will fall into error if the amount of data is bigger than 'maxlen' bytes.
|
|
|
36 |
Returns the amount of data read (in bytes) on success, or a negative value otherwise. The error code can be translated into a human error message via libtcp_strerr(). */
|
329 |
mateuszvis |
37 |
int net_recv(struct net_tcpsocket *socket, void *buff, long maxlen);
|
207 |
mateuszvis |
38 |
|
|
|
39 |
/* Close the 'sock' socket. */
|
|
|
40 |
void net_close(struct net_tcpsocket *socket);
|
|
|
41 |
|
|
|
42 |
/* Returns an info string about the networking engine being used */
|
|
|
43 |
const char *net_engine(void);
|
|
|
44 |
|
|
|
45 |
#endif
|