Class: UNIXServer
- Inherits:
-
UNIXSocket
- Object
- IO
- BasicSocket
- UNIXSocket
- UNIXServer
- Defined in:
- mrbgems/mruby-socket/mrblib/socket.rb
Instance Attribute Summary
Attributes inherited from BasicSocket
Instance Method Summary collapse
-
#accept ⇒ Object
call-seq: unixserver.accept -> unixsocket.
-
#accept_nonblock ⇒ Object
call-seq: unixserver.accept_nonblock -> unixsocket.
-
#initialize(path) ⇒ UNIXServer
constructor
call-seq: UNIXServer.new(path) -> unixserver.
-
#listen(backlog) ⇒ Object
call-seq: unixserver.listen(backlog) -> 0.
-
#sysaccept ⇒ Object
call-seq: unixserver.sysaccept -> integer.
Methods inherited from UNIXSocket
#addr, #path, #peeraddr, #recvfrom, socketpair
Methods inherited from BasicSocket
do_not_reverse_lookup, do_not_reverse_lookup=, for_fd, #local_address, #recv_nonblock, #remote_address
Methods inherited from IO
#each, #each_byte, #each_char, #hash, open, pipe, popen, #pos=, #printf, read, #rewind
Constructor Details
#initialize(path) ⇒ UNIXServer
call-seq:
UNIXServer.new(path) -> unixserver
Creates a new Unix domain server socket bound to the given path.
server = UNIXServer.new("/tmp/server_socket")
1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 1045 def initialize(path) fd = Socket._socket(Socket::AF_UNIX, Socket::SOCK_STREAM, 0) begin super(fd) Socket._bind(fd, Socket.pack_sockaddr_un(path)) self.listen(5) rescue => e IO._sysclose(fd) rescue nil raise e end if block_given? begin yield self ensure self.close rescue nil unless self.closed? end end end |
Instance Method Details
#accept ⇒ Object
call-seq:
unixserver.accept -> unixsocket
Accepts an incoming connection and returns a new UNIXSocket.
server = UNIXServer.new("/tmp/server")
client = server.accept
1074 1075 1076 1077 1078 1079 1080 1081 1082 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 1074 def accept fd = self.sysaccept begin sock = UNIXSocket.for_fd(fd) rescue IO._sysclose(fd) rescue nil end sock end |
#accept_nonblock ⇒ Object
call-seq:
unixserver.accept_nonblock -> unixsocket
Accepts an incoming connection without blocking. May raise an exception if no connection is available.
client = server.accept_nonblock
1093 1094 1095 1096 1097 1098 1099 1100 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 1093 def accept_nonblock begin self._setnonblock(true) self.accept ensure self._setnonblock(false) end end |
#listen(backlog) ⇒ Object
call-seq:
unixserver.listen(backlog) -> 0
Sets the socket to listen for incoming connections with the given backlog.
server.listen(5)
server.listen(128)
1111 1112 1113 1114 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 1111 def listen(backlog) Socket._listen(self.fileno, backlog) 0 end |
#sysaccept ⇒ Object
call-seq:
unixserver.sysaccept -> integer
Accepts an incoming connection and returns the file descriptor.
fd = server.sysaccept
1124 1125 1126 |
# File 'mrbgems/mruby-socket/mrblib/socket.rb', line 1124 def sysaccept Socket._accept(self.fileno) end |