Class: Slack::RealTime::Concurrency::Celluloid::Socket
- Inherits:
-
Socket
- Object
- Socket
- Slack::RealTime::Concurrency::Celluloid::Socket
show all
- Extended by:
- Forwardable
- Includes:
- Celluloid::IO, Celluloid::Internals::Logger
- Defined in:
- lib/slack/real_time/concurrency/celluloid.rb
Defined Under Namespace
Classes: Actor
Constant Summary
collapse
- BLOCK_SIZE =
4096
Instance Attribute Summary collapse
Attributes inherited from Socket
#driver, #options, #url
Instance Method Summary
collapse
Methods inherited from Socket
#disconnect!, #send_data, #start_sync
Constructor Details
#initialize(*args) ⇒ Socket
Returns a new instance of Socket.
23
24
25
26
|
# File 'lib/slack/real_time/concurrency/celluloid.rb', line 23
def initialize(*args)
super
@driver = build_driver
end
|
Instance Attribute Details
#socket ⇒ Object
Returns the value of attribute socket.
21
22
23
|
# File 'lib/slack/real_time/concurrency/celluloid.rb', line 21
def socket
@socket
end
|
Instance Method Details
#connect! {|driver| ... } ⇒ Object
29
30
31
32
33
34
|
# File 'lib/slack/real_time/concurrency/celluloid.rb', line 29
def connect!
super
driver.start
future.run_loop
end
|
#connected? ⇒ Boolean
59
60
61
|
# File 'lib/slack/real_time/concurrency/celluloid.rb', line 59
def connected?
!@connected.nil?
end
|
#read ⇒ Object
42
43
44
45
46
|
# File 'lib/slack/real_time/concurrency/celluloid.rb', line 42
def read
buffer = socket.readpartial(BLOCK_SIZE)
logger.debug("#{self.class}##{__method__}") { buffer }
driver.parse buffer
end
|
#run_loop ⇒ Object
36
37
38
39
40
|
# File 'lib/slack/real_time/concurrency/celluloid.rb', line 36
def run_loop
loop { read } if socket
rescue EOFError
end
|
#start_async ⇒ Object
53
54
55
56
57
|
# File 'lib/slack/real_time/concurrency/celluloid.rb', line 53
def start_async
future = yield self if block_given?
Actor.new(future)
end
|
#write(data) ⇒ Object
48
49
50
51
|
# File 'lib/slack/real_time/concurrency/celluloid.rb', line 48
def write(data)
logger.debug("#{self.class}##{__method__}") { data }
socket.write(data)
end
|