make timed kgio_wait_* implementation safer
[kgio.git] / ext / kgio / kgio.h
blob0ecfde075aa588b26c6d03223d9b966f1cb39927
1 #ifndef KGIO_H
2 #define KGIO_H
4 #include <ruby.h>
5 #ifdef HAVE_RUBY_IO_H
6 # include <ruby/io.h>
7 #else
8 # include <rubyio.h>
9 #endif
10 #include <errno.h>
11 #include <sys/types.h>
12 #include <sys/socket.h>
13 #include <sys/un.h>
14 #include <netinet/in.h>
15 #include <fcntl.h>
16 #include <unistd.h>
17 #include <arpa/inet.h>
18 #include <assert.h>
19 #include <netdb.h>
21 #include "ancient_ruby.h"
22 #include "nonblock.h"
23 #include "my_fileno.h"
25 struct io_args {
26 VALUE io;
27 VALUE buf;
28 char *ptr;
29 long len;
30 int fd;
33 void init_kgio_wait(void);
34 void init_kgio_read_write(void);
35 void init_kgio_accept(void);
36 void init_kgio_connect(void);
37 void init_kgio_autopush(void);
38 void init_kgio_poll(void);
39 void init_kgio_tryopen(void);
41 void kgio_autopush_accept(VALUE, VALUE);
42 void kgio_autopush_recv(VALUE);
43 void kgio_autopush_send(VALUE);
45 VALUE kgio_call_wait_writable(VALUE io);
46 VALUE kgio_call_wait_readable(VALUE io);
47 #if defined(HAVE_RB_THREAD_BLOCKING_REGION) && defined(HAVE_POLL)
48 # define USE_KGIO_POLL
49 #endif /* USE_KGIO_POLL */
51 #endif /* KGIO_H */