1// This file is part of SmallBASIC
2//
3// Network library (byte-stream sockets)
4//
5// This program is distributed under the terms of the GPL v2.0 or later
6// Download the GNU Public License (GPL) from www.gnu.org
7//
8// Copyright(C) 2000 Nicholas Christopoulos
9
10#if !defined(INET_H)
11#define INET_H
12
13#ifdef HAVE_CONFIG_H
14#include <config.h>
15#endif
16
17#include <string.h>
18#include <errno.h>
19#include <sys/types.h>
20
21#if defined(__cplusplus)
22extern "C" {
23#endif
24
25typedef int socket_t;
26
27/**
28 * @ingroup net
29 *
30 * initialize network driver
31 *
32 * @return non-zero on success
33 */
34int net_init(void);
35
36/**
37 * @ingroup net
38 *
39 * deinitialize network driver
40 *
41 * @return non-zero on success
42 */
43int net_close(void);
44
45/**
46 * @ingroup net
47 *
48 * writes a NULL terminated string to a socket
49 *
50 * @param s the socket
51 * @param str the string
52 */
53void net_print(socket_t s, const char *str);
54
55/**
56 * @ingroup net
57 *
58 * writes a string to a socket using printf-style
59 *
60 * @param s the socket
61 * @param fmt the format
62 * @param ... the format's parameters
63 */
64void net_printf(socket_t s, const char *fmt, ...);
65
66/**
67 * @ingroup net
68 *
69 * writes data to a socket
70 *
71 * @param s the socket
72 * @param str the string
73 */
74void net_send(socket_t s, const char *str, size_t size);
75
76/**
77 * @ingroup net
78 *
79 * reads a string from a socket until the size > from the size of the buffer
80 * or until one characters of 'delim' string found
81 *
82 * @note character \r will ignored
83 *
84 * @param s the socket
85 * @param buf a buffer to store the string
86 * @param size the size of the buffer
87 * @param delim the characters that terminates the string
88 * @return the number of the bytes that read
89 */
90int net_input(socket_t s, char *buf, int size, const char *delim);
91
92/**
93 * @ingroup net
94 *
95 * read the specified number of bytes from the socket
96 *
97 * @param s the socket
98 * @param buf a buffer to store the string
99 * @param size the size of the buffer
100 * @return the number of the bytes that read
101 */
102int net_read(socket_t s, char *buf, int size);
103
104/**
105 * @ingroup net
106 *
107 * connect to a server
108 *
109 * @param server_name the server's IP or domain-name
110 * @param server_port the port to connect
111 * @return on success the socket; otherwise -1
112 */
113socket_t net_connect(const char *server_name, int server_port);
114
115/**
116 * @ingroup net
117 *
118 * listen on a port number like a server
119 *
120 * @param server_port the port to listen
121 * @return on success the socket; otherwise -1
122 */
123socket_t net_listen(int server_port);
124
125/**
126 * @ingroup net
127 *
128 * disconnect
129 *
130 * @param s the socket
131 */
132void net_disconnect(socket_t s);
133
134/**
135 * @ingroup net
136 *
137 * returns true if something is waiting in input-buffer
138 *
139 * @param s the socket
140 * @return non-zero if something is waiting in input-buffer; otherwise returns 0
141 */
142int net_peek(socket_t s);
143
144#if defined(__cplusplus)
145}
146#endif
147
148#endif
149