Class: Ruflet::InProcessConnection

Inherits:
Object
  • Object
show all
Defined in:
lib/ruflet/server/in_process_connection.rb

Overview

Presents the embedded runtime bridge through the same connection contract used by the WebSocket transport. The server protocol therefore remains transport-agnostic: only the bytes' path changes.

Constant Summary collapse

MAX_MESSAGE_BYTES =
16 * 1024 * 1024
TASK_PUMP_INTERVAL =
0.001
REQUIRED_BRIDGE_METHODS =
%i[
  __bridge_read_nonblock __bridge_write __bridge_close
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(bridge: nil) ⇒ InProcessConnection

Returns a new instance of InProcessConnection.



14
15
16
17
18
# File 'lib/ruflet/server/in_process_connection.rb', line 14

def initialize(bridge: nil)
  @bridge = bridge || default_bridge
  @closed = false
  validate_bridge!
end

Instance Method Details

#closeObject



50
51
52
53
54
55
# File 'lib/ruflet/server/in_process_connection.rb', line 50

def close
  return if closed?

  @closed = true
  @bridge.__bridge_close
end

#closed?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/ruflet/server/in_process_connection.rb', line 24

def closed?
  @closed
end

#read_messageObject



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/ruflet/server/in_process_connection.rb', line 28

def read_message
  return nil if closed?

  payload = wait_for_message
  if payload.nil?
    @closed = true
    return nil
  end

  checked_bytes(payload)
end

#send_binary(payload) ⇒ Object

Raises:

  • (IOError)


40
41
42
43
44
# File 'lib/ruflet/server/in_process_connection.rb', line 40

def send_binary(payload)
  raise IOError, "Ruflet in-process connection is closed" if closed?

  @bridge.__bridge_write(checked_bytes(payload))
end

#send_text(payload) ⇒ Object



46
47
48
# File 'lib/ruflet/server/in_process_connection.rb', line 46

def send_text(payload)
  send_binary(payload)
end

#session_keyObject



20
21
22
# File 'lib/ruflet/server/in_process_connection.rb', line 20

def session_key
  @session_key ||= object_id
end