lib/slack/real_time/concurrency/celluloid.rb in slack-ruby-client-0.13.0 vs lib/slack/real_time/concurrency/celluloid.rb in slack-ruby-client-0.13.1
- old
+ new
@@ -66,19 +66,34 @@
logger.debug("#{self.class}##{__method__}") { data }
socket.write(data)
end
def start_async(client)
- Thread.new do
- client.run_loop
- end
+ @client = client
+ Actor.new(future.run_client_loop)
end
+ def run_client_loop
+ @client.run_loop
+ end
+
def connected?
!@connected.nil?
end
protected
+
+ class Actor
+ attr_reader :future
+
+ def initialize(future)
+ @future = future
+ end
+
+ def join
+ @future.value
+ end
+ end
def build_socket
socket = ::Celluloid::IO::TCPSocket.new(addr, port)
socket = ::Celluloid::IO::SSLSocket.new(socket, build_ssl_context) if secure?
socket