Module: Celluloid::IO

Defined in:
lib/celluloid/io.rb,
lib/celluloid/io/stream.rb,
lib/celluloid/io/mailbox.rb,
lib/celluloid/io/reactor.rb,
lib/celluloid/io/version.rb,
lib/celluloid/io/ssl_socket.rb,
lib/celluloid/io/ssl_server.rb,
lib/celluloid/io/tcp_server.rb,
lib/celluloid/io/tcp_socket.rb,
lib/celluloid/io/udp_socket.rb,
lib/celluloid/io/unix_server.rb,
lib/celluloid/io/unix_socket.rb,
lib/celluloid/io/dns_resolver.rb

Overview

Actors with evented IO support

Defined Under Namespace

Classes: DNSResolver, Mailbox, Reactor, SSLServer, SSLSocket, Stream, TCPServer, TCPSocket, UDPSocket, UNIXServer, UNIXSocket

Constant Summary

VERSION =
"0.14.0"

Class Method Summary (collapse)

Class Method Details

+ (Boolean) evented?

Returns:

  • (Boolean)


26
27
28
29
# File 'lib/celluloid/io.rb', line 26

def self.evented?
  actor = Thread.current[:celluloid_actor]
  actor && actor.mailbox.is_a?(Celluloid::IO::Mailbox)
end

+ (Object) included(klass)



21
22
23
24
# File 'lib/celluloid/io.rb', line 21

def self.included(klass)
  klass.send :include, Celluloid
  klass.mailbox_class Celluloid::IO::Mailbox
end

+ (Object) wait_readable(io)



31
32
33
34
35
36
37
38
39
40
# File 'lib/celluloid/io.rb', line 31

def wait_readable(io)
  io = io.to_io
  if IO.evented?
    mailbox = Thread.current[:celluloid_mailbox]
    mailbox.reactor.wait_readable(io)
  else
    Kernel.select([io])
  end
  nil
end

+ (Object) wait_writable(io)



43
44
45
46
47
48
49
50
51
52
# File 'lib/celluloid/io.rb', line 43

def wait_writable(io)
  io = io.to_io
  if IO.evented?
    mailbox = Thread.current[:celluloid_mailbox]
    mailbox.reactor.wait_writable(io)
  else
    Kernel.select([], [io])
  end
  nil
end