Class: Butler::Remote::Server
- Inherits:
-
Object
- Object
- Butler::Remote::Server
show all
- Includes:
- Log::Comfort
- Defined in:
- lib/butler/remote/server.rb
Instance Attribute Summary collapse
Attributes included from Log::Comfort
#logger
Instance Method Summary
collapse
#debug, #error, #exception, #fail, #info, #log, #warn
Constructor Details
#initialize(bot) ⇒ Server
Returns a new instance of Server.
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/butler/remote/server.rb', line 9
def initialize(bot)
@bot = bot
@host = nil
@port = nil
@clients = []
@server = nil
@logger = nil
@accepter = nil
@lock = Mutex.new
end
|
Instance Attribute Details
#host ⇒ Object
Returns the value of attribute host.
6
7
8
|
# File 'lib/butler/remote/server.rb', line 6
def host
@host
end
|
#port ⇒ Object
Returns the value of attribute port.
7
8
9
|
# File 'lib/butler/remote/server.rb', line 7
def port
@port
end
|
Instance Method Details
#accepter ⇒ Object
74
75
76
77
78
79
80
81
82
|
# File 'lib/butler/remote/server.rb', line 74
def accepter
while socket = @server.accept
@lock.synchronize {
@clients << Connection.open_thread(self, socket)
}
end
rescue => e
exception(e)
end
|
#disconnected(connection) ⇒ Object
64
65
66
67
68
|
# File 'lib/butler/remote/server.rb', line 64
def disconnected(connection)
@lock.synchronize {
@clients.delete(connection)
}
end
|
#dispatch(*args) ⇒ Object
56
57
58
|
# File 'lib/butler/remote/server.rb', line 56
def dispatch(*args)
@bot.dispatch(*args)
end
|
#login(*args) ⇒ Object
52
53
54
|
# File 'lib/butler/remote/server.rb', line 52
def login(*args)
@bot.access.login(*args)
end
|
#myself ⇒ Object
60
61
62
|
# File 'lib/butler/remote/server.rb', line 60
def myself
@bot.myself
end
|
#running? ⇒ Boolean
70
71
72
|
# File 'lib/butler/remote/server.rb', line 70
def running?
@accepter ? true : false
end
|
#start(host = @host, port = @port) ⇒ Object
33
34
35
36
37
38
39
40
41
|
# File 'lib/butler/remote/server.rb', line 33
def start(host=@host, port=@port)
if @host != host || @port != port then
@host = host.freeze
@port = port
@server = TCPServer.new(@host, @port)
stop
end
@accepter ||= Thread.new(&method(:accepter))
end
|
#stop ⇒ Object
43
44
45
46
47
48
49
50
|
# File 'lib/butler/remote/server.rb', line 43
def stop
@lock.synchronize {
@accepter.kill if @accepter
@accepter = nil
@clients.each { |client| client.quit("Server terminated") }
@clients = []
}
end
|