Class: ConfigRuntimeFactory

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

Overview

The ConfigRuntimeFactory class implements the AbstractConfigRuntimeFactory interface and provides methods for creating runtime contexts. Each method corresponds to a specific runtime (CLR, JVM, .NET Core, Perl, Ruby, Node.js, Python) and returns a RuntimeContext instance for that runtime. # @see Refer to this article on Hypertube Guides

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ ConfigRuntimeFactory

Returns a new instance of ConfigRuntimeFactory.



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

def initialize(path)
  @path = path
  Transmitter.set_config_source(path)
end

Instance Method Details

#clr(config_name = 'default') ⇒ RuntimeContext

Creates a 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}


22
23
24
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 22

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

#get_runtime_context(runtime, config_name) ⇒ Object



90
91
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
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 90

def get_runtime_context(runtime, config_name)
  jfr = JsonFileResolver.new(@path)

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

  conn_type = jfr.get_channel_type(RuntimeNameHandler.get_name(runtime), config_name)
  conn_type = conn_type.to_s.downcase
  if conn_type == 'tcp'
    conn_data = TcpConnectionData.new(jfr.get_channel_host(RuntimeNameHandler.get_name(runtime), config_name))
    rtm_ctx = RuntimeContext.get_instance(runtime, ConnectionType::TCP, conn_data)
  elsif conn_type == 'websocket' || conn_type == 'ws'
    conn_data = WsConnectionData.new(jfr.get_channel_host(RuntimeNameHandler.get_name(runtime), config_name))
    rtm_ctx = RuntimeContext.get_instance(runtime, ConnectionType::WEB_SOCKET, conn_data)
  elsif conn_type == 'http2' || conn_type == 'h2'
    conn_data = Http2ConnectionData.new(jfr.get_channel_host(RuntimeNameHandler.get_name(runtime), config_name))
    rtm_ctx = RuntimeContext.get_instance(runtime, ConnectionType::HTTP2, conn_data)
  elsif conn_type == 'inmemory' || conn_type == 'memory'
    rtm_ctx = RuntimeContext.get_instance(runtime, ConnectionType::IN_MEMORY, nil)
  else
    raise 'Invalid connection type'
  end
  load_modules(runtime, config_name, jfr, rtm_ctx)
  rtm_ctx
end

#jvm(config_name = 'default') ⇒ RuntimeContext

Creates a 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}


30
31
32
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 30

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

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



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 120

def load_modules(runtime, config_name, jfr, rtm_ctx)
  modules = jfr.get_modules(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') ⇒ RuntimeContext

Creates a 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}


38
39
40
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 38

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

#nodejs(config_name = 'default') ⇒ RuntimeContext

Creates a RuntimeContext instance to interact with Node.js runtime.

Parameters:

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

    The name of the configuration to use.

Returns:

  • (RuntimeContext)

    a RuntimeContext instance for the Node.js runtime

See Also:

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


62
63
64
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 62

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

#perl(config_name = 'default') ⇒ RuntimeContext

Creates a 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}


46
47
48
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 46

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

#php(config_name = 'default') ⇒ RuntimeContext

Creates a 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}


78
79
80
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 78

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

#python(config_name = 'default') ⇒ RuntimeContext

Creates a RuntimeContext instance to interact with Python runtime.

Parameters:

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

    The name of the configuration to use.

Returns:

  • (RuntimeContext)

    a RuntimeContext instance for the Python runtime

See Also:

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


70
71
72
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 70

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

#python27(config_name = 'default') ⇒ RuntimeContext

Creates a RuntimeContext instance to interact with Python 2.7 runtime.

Parameters:

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

    The name of the configuration to use.

Returns:

  • (RuntimeContext)

    a RuntimeContext instance for the Python 2.7 runtime

See Also:

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


86
87
88
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 86

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

#ruby(config_name = 'default') ⇒ RuntimeContext

Creates a 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}


54
55
56
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 54

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