Class: ActionCable::Connection::MessageBuffer

Inherits:
Object
  • Object
show all
Defined in:
lib/action_cable/connection/message_buffer.rb

Overview

Allows us to buffer messages received from the websocket before the Connection has been fully initialized and is ready to receive them. Entirely internal operation and should not be used directly by the user.

Instance Method Summary collapse

Constructor Details

#initialize(connection) ⇒ MessageBuffer

Returns a new instance of MessageBuffer.


6
7
8
9
# File 'lib/action_cable/connection/message_buffer.rb', line 6

def initialize(connection)
  @connection = connection
  @buffered_messages = []
end

Instance Method Details

#append(message) ⇒ Object


11
12
13
14
15
16
17
18
19
20
21
# File 'lib/action_cable/connection/message_buffer.rb', line 11

def append(message)
  if valid? message
    if processing?
      receive message
    else
      buffer message
    end
  else
    connection.logger.error "Couldn't handle non-string message: #{message.class}"
  end
end

#process!Object


27
28
29
30
# File 'lib/action_cable/connection/message_buffer.rb', line 27

def process!
  @processing = true
  receive_buffered_messages
end

#processing?Boolean

Returns:

  • (Boolean)

23
24
25
# File 'lib/action_cable/connection/message_buffer.rb', line 23

def processing?
  @processing
end