socket.c File Reference
`#include "rubysocket.h"`

Go to the source code of this file.

## Macros

#define | rsock_sock_s_socketpair rb_f_notimplement
#define | sock_gethostname rb_f_notimplement
#define | socket_s_ip_address_list rb_f_notimplement

## Functions

static void | setup_domain_and_type (VALUE domain, int *dv, VALUE type, int *tv)
static VALUE | sock_initialize (int argc, VALUE *argv, VALUE sock)
static VALUE | sock_connect (VALUE sock, VALUE addr)
static VALUE | sock_connect_nonblock (VALUE sock, VALUE addr)
static VALUE | sock_bind (VALUE sock, VALUE addr)
VALUE | rsock_sock_listen (VALUE sock, VALUE log)
static VALUE | sock_recvfrom (int argc, VALUE *argv, VALUE sock)
static VALUE | sock_recvfrom_nonblock (int argc, VALUE *argv, VALUE sock)
static VALUE | sock_accept (VALUE sock)
static VALUE | sock_accept_nonblock (VALUE sock)
static VALUE | sock_sysaccept (VALUE sock)
static VALUE | make_addrinfo (struct addrinfo *res0, int norevlookup)
static VALUE | sock_sockaddr (struct sockaddr *addr, size_t len)
static VALUE | sock_s_gethostbyname (VALUE obj, VALUE host)
static VALUE | sock_s_gethostbyaddr (int argc, VALUE *argv)
static VALUE | sock_s_getservbyname (int argc, VALUE *argv)
static VALUE | sock_s_getservbyport (int argc, VALUE *argv)
static VALUE | sock_s_getaddrinfo (int argc, VALUE *argv)
static VALUE | sock_s_getnameinfo (int argc, VALUE *argv)
static VALUE | sock_s_pack_sockaddr_in (VALUE self, VALUE port, VALUE host)
static VALUE | sock_s_unpack_sockaddr_in (VALUE self, VALUE addr)
void | Init_socket ()

## Macro Definition Documentation

#define rsock_sock_s_socketpair rb_f_notimplement

Definition at line 134 of file socket.c.

Referenced by Init_socket().

#define sock_gethostname rb_f_notimplement

Definition at line 877 of file socket.c.

Referenced by Init_socket().

#define socket_s_ip_address_list rb_f_notimplement

Definition at line 1792 of file socket.c.

Referenced by Init_socket().

## Function Documentation

void Init_socket | ( |  | ) |

Definition at line 1796 of file socket.c.

References rb_cBasicSocket, rb_cSocket, rb_define_class(), rb_define_method(), rb_define_singleton_method(), rsock_init_basicsocket(), rsock_init_socket_init(), rsock_sock_listen(), rsock_sock_s_socketpair, sock_accept(), sock_accept_nonblock(), sock_bind(), sock_connect(), sock_connect_nonblock(), sock_gethostname, sock_initialize(), sock_recvfrom(), sock_recvfrom_nonblock(), sock_s_getaddrinfo(), sock_s_gethostbyaddr(), sock_s_gethostbyname(), sock_s_getnameinfo(), sock_s_getservbyname(), sock_s_getservbyport(), sock_s_pack_sockaddr_in(), sock_s_unpack_sockaddr_in(), sock_sysaccept(), and socket_s_ip_address_list.

static VALUE make_addrinfo | ( | struct addrinfo * | res0,
|  | int | norevlookup
| ) |  |

static

Definition at line 882 of file socket.c.

References addrinfo::ai_addr, addrinfo::ai_canonname, addrinfo::ai_family, addrinfo::ai_next, addrinfo::ai_protocol, addrinfo::ai_socktype, INT2FIX, NULL, RARRAY_PTR, rb_ary_new(), rb_ary_push(), rb_eSocket, rb_raise(), rb_str_new2(), and rsock_ipaddr().

Referenced by sock_s_getaddrinfo().

VALUE rsock_sock_listen | ( | VALUE | sock,
|  | VALUE | log
| ) |  |

Definition at line 498 of file socket.c.

References rb_io_t::fd, GetOpenFile, INT2FIX, NUM2INT, rb_secure(), and rb_sys_fail().

Referenced by Init_socket(), rsock_init_tcpserver(), and rsock_init_unixserver().

static void setup_domain_and_type | ( | VALUE | domain,
|  | int * | dv,
|  | VALUE | type,
|  | int * | tv
| ) |  |

static

Definition at line 14 of file socket.c.

References rsock_family_arg(), and rsock_socktype_arg().

Referenced by sock_initialize().

static VALUE sock_accept | ( | VALUE | sock | ) |

static

Definition at line 706 of file socket.c.

References rb_io_t::fd, GetOpenFile, len, rb_assoc_new(), rb_cSocket, rsock_io_socket_addrinfo(), and rsock_s_accept().

Referenced by Init_socket().

static VALUE sock_accept_nonblock | ( | VALUE | sock | ) |

static

Definition at line 771 of file socket.c.

References GetOpenFile, len, rb_assoc_new(), rb_cSocket, rsock_io_socket_addrinfo(), and rsock_s_accept_nonblock().

Referenced by Init_socket().

static VALUE sock_bind | ( | VALUE | sock,
|  | VALUE | addr
| ) |  |

static

Definition at line 415 of file socket.c.

References rb_io_t::fd, GetOpenFile, INT2FIX, rb_sys_fail(), RSTRING_LENINT, RSTRING_PTR, and SockAddrStringValue.

Referenced by Init_socket().

static VALUE sock_connect | ( | VALUE | sock,
|  | VALUE | addr
| ) |  |

static

Definition at line 249 of file socket.c.

References rb_io_t::fd, GetOpenFile, INT2FIX, rb_str_new4(), rb_sys_fail(), rsock_connect(), RSTRING_LENINT, RSTRING_PTR, and SockAddrStringValue.

Referenced by Init_socket().

static VALUE sock_connect_nonblock | ( | VALUE | sock,
|  | VALUE | addr
| ) |  |

static

Definition at line 309 of file socket.c.

References EINPROGRESS, errno, rb_io_t::fd, GetOpenFile, INT2FIX, rb_io_set_nonblock(), rb_mod_sys_fail(), rb_mWaitWritable, rb_str_new4(), rb_sys_fail(), RSTRING_LENINT, RSTRING_PTR, and SockAddrStringValue.

Referenced by Init_socket().

static VALUE sock_initialize | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | sock
| ) |  |

static

Definition at line 40 of file socket.c.

References INT2FIX, NIL_P, NUM2INT, rb_scan_args(), rb_secure(), rb_sys_fail(), rsock_init_sock(), rsock_socket(), setup_domain_and_type(), and type.

Referenced by Init_socket().

static VALUE sock_recvfrom | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | sock
| ) |  |

static

Definition at line 618 of file socket.c.

References RECV_SOCKET, and rsock_s_recvfrom().

Referenced by Init_socket().

static VALUE sock_recvfrom_nonblock | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | sock
| ) |  |

static

Definition at line 686 of file socket.c.

References RECV_SOCKET, and rsock_s_recvfrom_nonblock().

Referenced by Init_socket().

static VALUE sock_s_getaddrinfo | ( | int | argc,
|  | VALUE * | argv
| ) |  |

static

Definition at line 1113 of file socket.c.

References addrinfo::ai_family, addrinfo::ai_flags, addrinfo::ai_protocol, addrinfo::ai_socktype, freeaddrinfo(), make_addrinfo(), MEMZERO, NIL_P, NUM2INT, PF_UNSPEC, rb_scan_args(), rsock_do_not_reverse_lookup, rsock_family_arg(), rsock_getaddrinfo(), rsock_revlookup_flag(), and rsock_socktype_arg().

Referenced by Init_socket().

static VALUE sock_s_gethostbyaddr | ( | int | argc,
|  | VALUE * | argv
| ) |  |

static

Definition at line 953 of file socket.c.

References INT2NUM(), names, NIL_P, NULL, rb_ary_new(), rb_ary_push(), rb_eSocket, rb_raise(), rb_scan_args(), rb_str_new(), rb_str_new2(), rsock_family_arg(), RSTRING_LEN, RSTRING_LENINT, RSTRING_PTR, and StringValuePtr.

Referenced by Init_socket().

static VALUE sock_s_gethostbyname | ( | VALUE | obj,
|  | VALUE | host
| ) |  |

static

Definition at line 937 of file socket.c.

References AI_CANONNAME, Qnil, rb_secure(), rsock_addrinfo(), rsock_make_hostent(), and sock_sockaddr().

Referenced by Init_socket().

static VALUE sock_s_getnameinfo | ( | int | argc,
|  | VALUE * | argv
| ) |  |

static

Definition at line 1165 of file socket.c.

References addrinfo::ai_addr, addrinfo::ai_family, addrinfo::ai_flags, addrinfo::ai_next, AI_NUMERICHOST, addrinfo::ai_socktype, FIXNUM_P, freeaddrinfo(), MEMZERO, NI_DGRAM, NIL_P, NULL, NUM2INT, NUM2LONG(), PF_UNSPEC, Qnil, RARRAY_LEN, RARRAY_PTR, rb_assoc_new(), rb_check_array_type(), rb_check_sockaddr_string_type(), rb_eArgError, rb_eSocket, rb_eTypeError, rb_getaddrinfo(), rb_getnameinfo(), rb_raise(), rb_scan_args(), rb_str_new2(), rsock_family_arg(), rsock_raise_socket_error(), RSTRING_LEN, RSTRING_PTR, SA_LEN, snprintf, SS_LEN, and StringValuePtr.

Referenced by Init_socket().

static VALUE sock_s_getservbyname | ( | int | argc,
|  | VALUE * | argv
| ) |  |

static

Definition at line 1016 of file socket.c.

References INT2FIX, NIL_P, proto, rb_eSocket, rb_raise(), rb_scan_args(), StringValue, StringValueCStr, and STRTOUL.

Referenced by Init_socket().

static VALUE sock_s_getservbyport | ( | int | argc,
|  | VALUE * | argv
| ) |  |

static

Definition at line 1057 of file socket.c.

References NIL_P, NUM2LONG(), proto, rb_eRangeError, rb_eSocket, rb_raise(), rb_scan_args(), rb_tainted_str_new2(), and StringValueCStr.

Referenced by Init_socket().

static VALUE sock_s_pack_sockaddr_in | ( | VALUE | self,
|  | VALUE | port,
|  | VALUE | host
| ) |  |

static

Definition at line 1305 of file socket.c.

References addrinfo::ai_addr, addrinfo::ai_addrlen, freeaddrinfo(), OBJ_INFECT, rb_str_new(), and rsock_addrinfo().

Referenced by Init_socket().

static VALUE sock_s_unpack_sockaddr_in | ( | VALUE | self,
|  | VALUE | addr
| ) |  |

static

Definition at line 1331 of file socket.c.

References INT2NUM(), OBJ_INFECT, rb_assoc_new(), rb_eArgError, rb_raise(), rsock_make_ipaddr(), RSTRING_LEN, and SockAddrStringValuePtr.

Referenced by Init_socket().

static VALUE sock_sockaddr | ( | struct sockaddr * | addr,
|  | size_t | len
| ) |  |

static

Definition at line 905 of file socket.c.

References rb_eSocket, rb_raise(), and rb_str_new().

Referenced by sock_s_gethostbyname().

static VALUE sock_sysaccept | ( | VALUE | sock | ) |

static

Definition at line 822 of file socket.c.

References rb_io_t::fd, GetOpenFile, len, rb_assoc_new(), rsock_io_socket_addrinfo(), and rsock_s_accept().

Referenced by Init_socket().