Class: Hypertube::Sdk::ConfigRuntimeFactory

Inherits:
Internal::AbstractConfigRuntimeFactory show all
Defined in:
lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ ConfigRuntimeFactory

Returns a new instance of ConfigRuntimeFactory.



15
16
17
18
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 15

def initialize(path)
  @path = path
  Hypertube::Core::Transmitter::Transmitter.set_config_source(path)
end

Instance Method Details

#clr(config_name = 'default') ⇒ Hypertube::Sdk::RuntimeContext

Creates a Hypertube::Sdk::RuntimeContext instance to interact with CLR runtime.

Parameters:

  • config_name (String) (defaults to: 'default')

    The name of the configuration to use.

Returns:

See Also:

  • to this {https://www.hypertube.dev/guides/v2/ruby/foundations/runtime-context article on Hypertube Guides}


24
25
26
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 24

def clr(config_name = 'default')
  get_runtime_context(Hypertube::Utils::RuntimeNameHt::CLR, config_name)
end

#get_runtime_context(runtime, config_name) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 92

def get_runtime_context(runtime, config_name)
  jfr = Hypertube::Sdk::Tools::JsonFileResolver.new(@path)

  begin
    license_key = jfr.get_license_key
    Hypertube::Core::Transmitter::Transmitter.activate_with_credentials(license_key)
  rescue StandardError
    # licenseKey not found - do nothing
  end

  conn_type = jfr.get_channel_type(Hypertube::Utils::RuntimeNameHandler.get_name(runtime), config_name)
  conn_type = conn_type.to_s.downcase
  conn_data = nil

  if conn_type == 'tcp'
    conn_data = Hypertube::Utils::TcpConnectionData.new(jfr.get_channel_host(Hypertube::Utils::RuntimeNameHandler.get_name(runtime), config_name))
  elsif conn_type == 'websocket' || conn_type == 'ws'
    conn_data = Hypertube::Utils::WsConnectionData.new(jfr.get_channel_host(Hypertube::Utils::RuntimeNameHandler.get_name(runtime), config_name))
  elsif conn_type == 'http2' || conn_type == 'h2'
    conn_data = Hypertube::Utils::Http2ConnectionData.new(jfr.get_channel_host(Hypertube::Utils::RuntimeNameHandler.get_name(runtime), config_name))
  elsif conn_type == 'inmemory' || conn_type == 'memory'
    conn_data = Hypertube::Utils::InMemoryConnectionData.new
  else
    raise 'Invalid connection type'
  end

  rtm_ctx = Hypertube::Sdk::RuntimeContext.get_instance(runtime, conn_data)
  load_modules(runtime, config_name, jfr, rtm_ctx) if conn_data.connection_type == Hypertube::Utils::ConnectionType::IN_MEMORY

  rtm_ctx
end

#jvm(config_name = 'default') ⇒ Hypertube::Sdk::RuntimeContext

Creates a Hypertube::Sdk::RuntimeContext instance to interact with JVM runtime.

Parameters:

  • config_name (String) (defaults to: 'default')

    The name of the configuration to use.

Returns:

See Also:

  • to this {https://www.hypertube.dev/guides/v2/ruby/foundations/runtime-context article on Hypertube Guides}


32
33
34
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 32

def jvm(config_name = 'default')
  get_runtime_context(Hypertube::Utils::RuntimeNameHt::JVM, config_name)
end

#load_modules(runtime, config_name, jfr, rtm_ctx) ⇒ Object



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 124

def load_modules(runtime, config_name, jfr, rtm_ctx)
  modules = jfr.get_modules(Hypertube::Utils::RuntimeNameHandler.get_name(runtime), config_name)
               .split(',')
               .reject(&:empty?)

  config_directory_absolute_path = File.dirname(@path)

  modules.each do |mod|
    if Pathname.new(mod).absolute?
      rtm_ctx.load_library(mod)
    else
      rtm_ctx.load_library(File.join(config_directory_absolute_path, mod))
    end
  end
end

#netcore(config_name = 'default') ⇒ Hypertube::Sdk::RuntimeContext

Creates a Hypertube::Sdk::RuntimeContext instance to interact with .NET runtime.

Parameters:

  • config_name (String) (defaults to: 'default')

    The name of the configuration to use.

Returns:

See Also:

  • to this {https://www.hypertube.dev/guides/v2/ruby/foundations/runtime-context article on Hypertube Guides}


40
41
42
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 40

def netcore(config_name = 'default')
  get_runtime_context(Hypertube::Utils::RuntimeNameHt::NETCORE, config_name)
end

#nodejs(config_name = 'default') ⇒ Hypertube::Sdk::RuntimeContext

Creates a Hypertube::Sdk::RuntimeContext instance to interact with Node.js runtime.

Parameters:

  • config_name (String) (defaults to: 'default')

    The name of the configuration to use.

Returns:

See Also:

  • to this {https://www.hypertube.dev/guides/v2/ruby/foundations/runtime-context article on Hypertube Guides}


64
65
66
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 64

def nodejs(config_name = 'default')
  get_runtime_context(Hypertube::Utils::RuntimeNameHt::NODEJS, config_name)
end

#perl(config_name = 'default') ⇒ Hypertube::Sdk::RuntimeContext

Creates a Hypertube::Sdk::RuntimeContext instance to interact with Perl runtime.

Parameters:

  • config_name (String) (defaults to: 'default')

    The name of the configuration to use.

Returns:

See Also:

  • to this {https://www.hypertube.dev/guides/v2/ruby/foundations/runtime-context article on Hypertube Guides}


48
49
50
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 48

def perl(config_name = 'default')
  get_runtime_context(Hypertube::Utils::RuntimeNameHt::PERL, config_name)
end

#php(config_name = 'default') ⇒ Hypertube::Sdk::RuntimeContext

Creates a Hypertube::Sdk::RuntimeContext instance to interact with PHP runtime.

Parameters:

  • config_name (String) (defaults to: 'default')

    The name of the configuration to use.

Returns:

See Also:

  • to this {https://www.hypertube.dev/guides/v2/ruby/foundations/runtime-context article on Hypertube Guides}


80
81
82
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 80

def php(config_name = 'default')
  get_runtime_context(Hypertube::Utils::RuntimeNameHt::PHP, config_name)
end

#python(config_name = 'default') ⇒ Hypertube::Sdk::RuntimeContext

Creates a Hypertube::Sdk::RuntimeContext instance to interact with Python runtime.

Parameters:

  • config_name (String) (defaults to: 'default')

    The name of the configuration to use.

Returns:

See Also:

  • to this {https://www.hypertube.dev/guides/v2/ruby/foundations/runtime-context article on Hypertube Guides}


72
73
74
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 72

def python(config_name = 'default')
  get_runtime_context(Hypertube::Utils::RuntimeNameHt::PYTHON, config_name)
end

#python27(config_name = 'default') ⇒ Hypertube::Sdk::RuntimeContext

Creates a Hypertube::Sdk::RuntimeContext instance to interact with Python 2.7 runtime.

Parameters:

  • config_name (String) (defaults to: 'default')

    The name of the configuration to use.

Returns:

See Also:

  • to this {https://www.hypertube.dev/guides/v2/ruby/foundations/runtime-context article on Hypertube Guides}


88
89
90
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 88

def python27(config_name = 'default')
  get_runtime_context(Hypertube::Utils::RuntimeNameHt::PYTHON27, config_name)
end

#ruby(config_name = 'default') ⇒ Hypertube::Sdk::RuntimeContext

Creates a Hypertube::Sdk::RuntimeContext instance to interact with Ruby runtime.

Parameters:

  • config_name (String) (defaults to: 'default')

    The name of the configuration to use.

Returns:

See Also:

  • to this {https://www.hypertube.dev/guides/v2/ruby/foundations/runtime-context article on Hypertube Guides}


56
57
58
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 56

def ruby(config_name = 'default')
  get_runtime_context(Hypertube::Utils::RuntimeNameHt::RUBY, config_name)
end