grpc-orin3-provider 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -1
  3. data/README.md +18 -21
  4. data/Rakefile +42 -0
  5. data/gen/Design.ORiN3.Common/V1/orin3_common_pb.rb +23 -0
  6. data/gen/Design.ORiN3.Common/V1/orin3_common_remote_engine_pb.rb +25 -0
  7. data/gen/Design.ORiN3.Provider/V1/orin3_object_type_pb.rb +23 -0
  8. data/gen/Design.ORiN3.Provider/V1/orin3_value_type_pb.rb +23 -0
  9. data/gen/Message.ORiN3.Provider/V1/orin3_base_object_pb.rb +39 -0
  10. data/gen/Message.ORiN3.Provider/V1/{orin3baseobject_services_pb.rb → orin3_base_object_services_pb.rb} +3 -3
  11. data/gen/Message.ORiN3.Provider/V1/orin3_child_creator_pb.rb +39 -0
  12. data/gen/Message.ORiN3.Provider/V1/{orin3childcreator_services_pb.rb → orin3_child_creator_services_pb.rb} +3 -3
  13. data/gen/Message.ORiN3.Provider/V1/orin3_child_pb.rb +28 -0
  14. data/gen/Message.ORiN3.Provider/V1/{orin3child_services_pb.rb → orin3_child_services_pb.rb} +3 -3
  15. data/gen/Message.ORiN3.Provider/V1/orin3_common_type_pb.rb +79 -0
  16. data/gen/Message.ORiN3.Provider/V1/orin3_controller_creator_pb.rb +28 -0
  17. data/gen/Message.ORiN3.Provider/V1/{orin3controllercreator_services_pb.rb → orin3_controller_creator_services_pb.rb} +3 -3
  18. data/gen/Message.ORiN3.Provider/V1/orin3_executable_pb.rb +28 -0
  19. data/gen/Message.ORiN3.Provider/V1/{orin3executable_services_pb.rb → orin3_executable_services_pb.rb} +3 -3
  20. data/gen/Message.ORiN3.Provider/V1/orin3_file_pb.rb +41 -0
  21. data/gen/Message.ORiN3.Provider/V1/{orin3file_services_pb.rb → orin3_file_services_pb.rb} +3 -3
  22. data/gen/Message.ORiN3.Provider/V1/orin3_job_pb.rb +32 -0
  23. data/gen/Message.ORiN3.Provider/V1/{orin3job_services_pb.rb → orin3_job_services_pb.rb} +3 -3
  24. data/gen/Message.ORiN3.Provider/V1/orin3_parent_pb.rb +31 -0
  25. data/gen/Message.ORiN3.Provider/V1/{orin3parent_services_pb.rb → orin3_parent_services_pb.rb} +3 -3
  26. data/gen/Message.ORiN3.Provider/V1/orin3_resource_opener_pb.rb +30 -0
  27. data/gen/Message.ORiN3.Provider/V1/{orin3resourceopener_services_pb.rb → orin3_resource_opener_services_pb.rb} +3 -3
  28. data/gen/Message.ORiN3.Provider/V1/orin3_root_object_pb.rb +44 -0
  29. data/gen/Message.ORiN3.Provider/V1/{orin3rootobject_services_pb.rb → orin3_root_object_services_pb.rb} +3 -3
  30. data/gen/Message.ORiN3.Provider/V1/orin3_stream_pb.rb +28 -0
  31. data/gen/Message.ORiN3.Provider/V1/{orin3stream_services_pb.rb → orin3_stream_services_pb.rb} +3 -3
  32. data/gen/Message.ORiN3.Provider/V1/orin3_variable_pb.rb +31 -0
  33. data/gen/Message.ORiN3.Provider/V1/{orin3variable_services_pb.rb → orin3_variable_services_pb.rb} +3 -3
  34. data/gen/Message.ORiN3.RemoteEngine/V1/orin3_remote_engine_pb.rb +40 -0
  35. data/gen/Message.ORiN3.RemoteEngine/V1/orin3_remote_engine_services_pb.rb +32 -0
  36. data/lib/grpc/client/orin3/message_client_error.rb +23 -0
  37. data/lib/grpc/client/orin3/provider/orin3_base_object.rb +145 -0
  38. data/lib/grpc/client/orin3/provider/orin3_child_creator.rb +104 -0
  39. data/lib/grpc/client/orin3/provider/orin3_controller.rb +68 -0
  40. data/lib/grpc/client/orin3/provider/orin3_file.rb +146 -0
  41. data/lib/grpc/client/orin3/provider/orin3_job.rb +86 -0
  42. data/lib/grpc/client/orin3/provider/orin3_module.rb +30 -0
  43. data/lib/grpc/client/orin3/provider/orin3_resource_opener.rb +50 -0
  44. data/lib/grpc/client/orin3/provider/orin3_root_object.rb +108 -0
  45. data/lib/grpc/client/orin3/provider/orin3_stream.rb +48 -0
  46. data/lib/grpc/client/orin3/provider/orin3_variable.rb +500 -0
  47. data/lib/grpc/client/orin3/remoteengine/orin3_remote_engine.rb +158 -0
  48. data/lib/grpc/orin3/provider/date_time_converter.rb +25 -0
  49. data/lib/grpc/orin3/provider/orin3_binary_converter.rb +686 -0
  50. data/lib/grpc/orin3/provider/version.rb +1 -1
  51. data/lib/grpc/orin3/provider.rb +160 -99
  52. data/testsemiauto/test_with_mock_provider.rb +908 -0
  53. data/testsemiauto/test_with_test_provider.rb +200 -0
  54. data/testsemiauto/testdata/file.txt +1 -0
  55. metadata +51 -28
  56. data/gen/Message.ORiN3.Common/V1/orin3common_pb.rb +0 -77
  57. data/gen/Message.ORiN3.Provider/V1/orin3baseobject_pb.rb +0 -38
  58. data/gen/Message.ORiN3.Provider/V1/orin3child_pb.rb +0 -28
  59. data/gen/Message.ORiN3.Provider/V1/orin3childcreator_pb.rb +0 -38
  60. data/gen/Message.ORiN3.Provider/V1/orin3controllercreator_pb.rb +0 -28
  61. data/gen/Message.ORiN3.Provider/V1/orin3executable_pb.rb +0 -28
  62. data/gen/Message.ORiN3.Provider/V1/orin3file_pb.rb +0 -41
  63. data/gen/Message.ORiN3.Provider/V1/orin3job_pb.rb +0 -32
  64. data/gen/Message.ORiN3.Provider/V1/orin3parent_pb.rb +0 -31
  65. data/gen/Message.ORiN3.Provider/V1/orin3resourceopener_pb.rb +0 -30
  66. data/gen/Message.ORiN3.Provider/V1/orin3rootobject_pb.rb +0 -44
  67. data/gen/Message.ORiN3.Provider/V1/orin3stream_pb.rb +0 -28
  68. data/gen/Message.ORiN3.Provider/V1/orin3variable_pb.rb +0 -30
@@ -0,0 +1,158 @@
1
+ require_relative '../../../../../gen/Design.ORiN3.Common/V1/orin3_common_remote_engine_pb'
2
+ require_relative '../../../../../gen/Message.ORiN3.RemoteEngine/V1/orin3_remote_engine_pb'
3
+ require_relative '../../../../../gen/Message.ORiN3.RemoteEngine/V1/orin3_remote_engine_services_pb'
4
+ require_relative '../message_client_error'
5
+
6
+ module O3
7
+ include Design::ORiN3::Common::RemoteEngine::V1::AutoGenerated
8
+ include Message::ORiN3::RemoteEngine::V1::AutoGenerated
9
+ end
10
+
11
+ module Grpc
12
+ module Client
13
+ module ORiN3
14
+ class RemoteEngineStatus
15
+ attr_reader :result_code, :status, :instance_id, :host, :addresses, :version, :os_platform, :os_description, :running_provider_count
16
+
17
+ def initialize(result_code, status, instance_id, host, addresses, version, os_platform, os_description, running_provider_count)
18
+ @result_code = result_code
19
+ @status = status
20
+ @instance_id = instance_id
21
+ @host = host
22
+ @addresses = addresses
23
+ @version = version
24
+ @os_platform = os_platform
25
+ @os_description = os_description
26
+ @running_provider_count = running_provider_count
27
+ end
28
+ end
29
+
30
+ class ProviderEndpoint
31
+ attr_accessor :index, :ip_address, :port, :uri, :protocol_type
32
+
33
+ def initialize(index, ip_address, port, uri, protocol_type)
34
+ @index = index
35
+ @ip_address = ip_address
36
+ @port = port
37
+ @uri = uri
38
+ @protocol_type = protocol_type
39
+ end
40
+ end
41
+
42
+ class ProviderInformation
43
+ attr_accessor :endpoints
44
+
45
+ def initialize(endpoints)
46
+ @endpoints = endpoints
47
+ end
48
+ end
49
+
50
+ class WakeupProviderResponse
51
+ attr_accessor :id, :provider_information
52
+
53
+ def initialize(id, provider_information)
54
+ @id = id
55
+ @provider_information = provider_information
56
+ end
57
+ end
58
+
59
+ class RemoteEngine
60
+ def initialize(channel)
61
+ @channel = channel
62
+ end
63
+
64
+ def get_status
65
+ begin
66
+ service = O3::RemoteEngineService::Stub.new(nil, :this_channel_is_insecure, channel_override: @channel)
67
+ request = O3::GetRemoteEngineStatusRequest.new(common: O3::CommonRequest.new)
68
+ response = service.get_remote_engine_status(request)
69
+ if (response.common.result_code != :SUCCEEDED)
70
+ raise MessageClientError.new(response.common.result_code, response.common.detail)
71
+ end
72
+ return RemoteEngineStatus.new(response.common.result_code, response.status,
73
+ response.instance_id, response.host, response.addresses, response.version,
74
+ response.os_platform, response.os_description, response.running_provider_count)
75
+ rescue MessageClientError
76
+ raise
77
+ rescue StandardError => e
78
+ raise MessageClientError.new(e)
79
+ end
80
+ end
81
+
82
+ def wakeup_provider(id, version, host, port)
83
+ begin
84
+ service = O3::RemoteEngineService::Stub.new(nil, :this_channel_is_insecure, channel_override: @channel)
85
+ endpoint_info = create_provider_core_startup_argument_endpoint_info(0, host, port)
86
+ telemetry_option = create_telemetry_option(true)
87
+ argument = create_provider_core_startup_argument(false, [endpoint_info], 0, telemetry_option)
88
+ request = O3::WakeupProviderRequest.new(
89
+ common: O3::CommonRequest.new(reserved: 0),
90
+ id: id, version: version, provider_startup_argument: argument)
91
+ response = service.wakeup_provider(request)
92
+ if (response.common.result_code != :SUCCEEDED)
93
+ raise MessageClientError.new(response.common.result_code, response.common.detail)
94
+ end
95
+
96
+ endpoints = response.provider_information.endpoints.map do |endpoint|
97
+ ProviderEndpoint.new(
98
+ endpoint.index,
99
+ endpoint.ip_address,
100
+ endpoint.port,
101
+ endpoint.uri,
102
+ endpoint.protocol_type
103
+ )
104
+ end
105
+ return WakeupProviderResponse.new(response.id, ProviderInformation.new(endpoints))
106
+ rescue MessageClientError
107
+ raise
108
+ rescue StandardError => e
109
+ raise MessageClientError.new(e)
110
+ end
111
+ end
112
+
113
+ def terminate_provider(id)
114
+ begin
115
+ service = O3::RemoteEngineService::Stub.new(nil, :this_channel_is_insecure, channel_override: @channel)
116
+ request = O3::TerminateProviderRequest.new(common: O3::CommonRequest.new, id: id)
117
+ response = service.terminate_provider(request)
118
+ if (response.common.result_code != :SUCCEEDED)
119
+ raise MessageClientError.new(response.common.result_code, response.common.detail)
120
+ end
121
+ rescue MessageClientError
122
+ raise
123
+ rescue StandardError => e
124
+ raise MessageClientError.new(e)
125
+ end
126
+ end
127
+
128
+ private
129
+ def create_provider_core_startup_argument(thread_safe_mode, endpoint_infos, log_level, telemetry_option)
130
+ O3::ProviderCoreStartupArgument.new(
131
+ thread_safe_mode: thread_safe_mode,
132
+ provider_core_startup_argument_endpoint_infos: endpoint_infos,
133
+ log_level: log_level,
134
+ telemetry_option: telemetry_option,
135
+ extension: {}
136
+ )
137
+ end
138
+
139
+ def create_telemetry_option(use_remote_engine_telemetry_setting)
140
+ O3::TelemetryOption.new(
141
+ attributes: {},
142
+ use_remote_engine_telemetry_setting: use_remote_engine_telemetry_setting,
143
+ telemetry_endpoints: []
144
+ )
145
+ end
146
+
147
+ def create_provider_core_startup_argument_endpoint_info(protocol_type, host, port)
148
+ O3::ProviderCoreStartupArgumentEndpointInfo.new(
149
+ protocol_type: protocol_type,
150
+ host: host,
151
+ port: port,
152
+ reserved: "".b # 空のバイト列
153
+ )
154
+ end
155
+ end
156
+ end
157
+ end
158
+ end
@@ -0,0 +1,25 @@
1
+ require 'time'
2
+
3
+ module Grpc
4
+ module ORiN3
5
+ module Provider
6
+ class DateTimeConverter
7
+ TICKS_PER_SECOND = 10_000_000
8
+ EPOCH = Time.utc(1, 1, 1, 0, 0, 0)
9
+
10
+ def self.to_int64(time)
11
+ utc_time = time.utc
12
+ ticks = ((utc_time - EPOCH) * TICKS_PER_SECOND).to_i
13
+ return ticks & 0x3FFFFFFFFFFFFFFF
14
+ end
15
+
16
+ def self.from_int64(int64)
17
+ filter = 0x3FFFFFFFFFFFFFFF
18
+ datetime_num = int64 & filter
19
+ seconds_since_windows_epoch = datetime_num.to_f / TICKS_PER_SECOND
20
+ return EPOCH + seconds_since_windows_epoch
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end