class Slack::RealTime::Concurrency::Celluloid::Socket

def build_driver

def build_driver
  ::WebSocket::Driver.client(self)
end

def build_socket

def build_socket
  socket = TCPSocket.new(addr, port)
  socket = SSLSocket.new(socket, build_ssl_context) if secure?
  socket
end

def build_ssl_context

def build_ssl_context
  OpenSSL::SSL::SSLContext.new(:TLSv1_2_client)
end

def connect

def connect
  @socket = build_socket
  @connected = @socket.connect
end

def connect!

Other tags:
    Yieldparam: driver -
def connect!
  super
  driver.start
  future.run_loop
end

def connected?

def connected?
  !@connected.nil?
end

def initialize(*args)

def initialize(*args)
  super
  @driver = build_driver
end

def read

def read
  buffer = socket.readpartial(BLOCK_SIZE)
  driver.parse buffer
end

def run_loop

def run_loop
  loop { read } if socket
rescue EOFError
  # connection closed
end

def start_async

def start_async
  future = yield self if block_given?
  Actor.new(future)
end