Class: Relayer::IRCSocketSelector

Inherits:
Object
  • Object
show all
Defined in:
lib/relayer/socket.rb

Constant Summary collapse

@@sockets =
{}
@@started =
false

Class Method Summary collapse

Class Method Details

.add_irc_socket(socket, client) ⇒ Object



47
48
49
# File 'lib/relayer/socket.rb', line 47

def self.add_irc_socket(socket, client)
  @@sockets[socket] = client
end

.instanceObject



43
44
45
# File 'lib/relayer/socket.rb', line 43

def self.instance
  @@instance ||= IRCSocketSelector.new
end

.selectObject



51
52
53
54
55
56
57
58
59
60
# File 'lib/relayer/socket.rb', line 51

def self.select
  sockets = @@sockets.keys
  
  readable, writable, exceptioned = IO.select(sockets, nil, nil)
  
  readable.each do |socket|
    client = @@sockets[socket]
    client.readable
  end
end

.start!Object



66
67
68
69
70
71
72
73
# File 'lib/relayer/socket.rb', line 66

def self.start!
  return if @@sockets.empty?
  
  @@started = true
  while true
    IRCSocketSelector.select
  end
end

.started?Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/relayer/socket.rb', line 62

def self.started?
  @@started
end