11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/hypertube-ruby-sdk/core/interpreter/interpreter.rb', line 11
def self.execute(command, connection_data)
message_byte_array = Hypertube::Core::Protocol::CommandSerializer.serialize(command, connection_data)
if connection_data.is_a? Utils::WsConnectionData
require_relative '../web_socket_client/web_socket_client'
response_byte_array = Hypertube::Core::WebSocketClient::WebSocketClient.send_message(connection_data, message_byte_array)
elsif connection_data.is_a? Utils::Http2ConnectionData
require_relative '../http2_client/http2_client'
response_byte_array = Hypertube::Core::Http2Client::Http2Client.send_message(connection_data, message_byte_array)
else
if connection_data..length.positive?
context_metadata_payload = build_context_metadata_payload(command, connection_data)
command = Hypertube::Utils::Command.new(
command.runtime_name,
Hypertube::Utils::CommandType::CONTEXT_METADATA,
[context_metadata_payload, command]
)
message_byte_array = Hypertube::Core::Protocol::CommandSerializer.serialize(command, connection_data)
end
if command.runtime_name == Hypertube::Utils::RuntimeNameHt::RUBY && (connection_data.is_a? Utils::InMemoryConnectionData)
require_relative '../receiver/receiver'
response_byte_array = Hypertube::Core::Receiver::Receiver.send_command(message_byte_array)[1]
else
require_relative '../transmitter/transmitter'
response_byte_array = Hypertube::Core::Transmitter::Transmitter.send_command(message_byte_array, message_byte_array.length)
end
end
Hypertube::Core::Protocol::CommandDeserializer.new(response_byte_array).deserialize
end
|