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 RuntimeBridge Guides

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ ConfigRuntimeFactory

Returns a new instance of ConfigRuntimeFactory.



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

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 RuntimeBridge Guides}


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

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

#get_runtime_context(runtime, config_name) ⇒ Object



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

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)
  if conn_type == 'tcp'
    conn_data = TcpConnectionData.new(jfr.get_channel_host(RuntimeNameHandler.get_name(runtime), config_name),
                                      jfr.get_channel_port(RuntimeNameHandler.get_name(runtime), config_name))
    rtm_ctx = RuntimeContext.get_instance(runtime, ConnectionType::TCP, conn_data)
  elsif conn_type == 'webSocket'
    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 == 'inMemory'
    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 RuntimeBridge Guides}


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

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

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



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/hypertube-ruby-sdk/sdk/config_runtime_factory.rb', line 116

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 RuntimeBridge Guides}


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

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 RuntimeBridge Guides}


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

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 RuntimeBridge Guides}


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

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 RuntimeBridge Guides}


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

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 RuntimeBridge Guides}


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

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 RuntimeBridge Guides}


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

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 RuntimeBridge Guides}


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

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