r2corba 1.6.1-x64-mingw-ucrt

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 (237) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +173 -0
  3. data/LICENSE +59 -0
  4. data/README.rdoc +62 -0
  5. data/THANKS +54 -0
  6. data/bin/r2corba +8 -0
  7. data/bin/r2corba.bat +20 -0
  8. data/bin/ridlc +11 -0
  9. data/bin/ridlc.bat +23 -0
  10. data/bin/rins +7 -0
  11. data/bin/rins.bat +19 -0
  12. data/ext/.keep +0 -0
  13. data/lib/corba/cbase/IORMap.rb +32 -0
  14. data/lib/corba/cbase/ORB.rb +239 -0
  15. data/lib/corba/cbase/Request.rb +133 -0
  16. data/lib/corba/cbase/Streams.rb +128 -0
  17. data/lib/corba/cbase/Stub.rb +18 -0
  18. data/lib/corba/cbase/Typecode.rb +440 -0
  19. data/lib/corba/cbase/Values.rb +130 -0
  20. data/lib/corba/cbase/exception.rb +67 -0
  21. data/lib/corba/cbase/poa.rb +22 -0
  22. data/lib/corba/cbase/policies.rb +77 -0
  23. data/lib/corba/cbase/post_require.rb +13 -0
  24. data/lib/corba/cbase/require.rb +36 -0
  25. data/lib/corba/cmds/base.rb +84 -0
  26. data/lib/corba/cmds/test.rb +29 -0
  27. data/lib/corba/common/Any.rb +91 -0
  28. data/lib/corba/common/IDL.rb +100 -0
  29. data/lib/corba/common/ORB.rb +367 -0
  30. data/lib/corba/common/Object.rb +211 -0
  31. data/lib/corba/common/Request.rb +19 -0
  32. data/lib/corba/common/Servant.rb +107 -0
  33. data/lib/corba/common/Struct.rb +21 -0
  34. data/lib/corba/common/Stub.rb +78 -0
  35. data/lib/corba/common/Typecode.rb +1147 -0
  36. data/lib/corba/common/Union.rb +60 -0
  37. data/lib/corba/common/Values.rb +92 -0
  38. data/lib/corba/common/const.rb +21 -0
  39. data/lib/corba/common/exception.rb +68 -0
  40. data/lib/corba/common/require.rb +34 -0
  41. data/lib/corba/common/version.rb +21 -0
  42. data/lib/corba/idl/BiDirPolicyC.rb +62 -0
  43. data/lib/corba/idl/CosNamingC.rb +460 -0
  44. data/lib/corba/idl/CosNamingS.rb +308 -0
  45. data/lib/corba/idl/IDL.rb +20 -0
  46. data/lib/corba/idl/IORTable.pidl +61 -0
  47. data/lib/corba/idl/IORTableC.rb +116 -0
  48. data/lib/corba/idl/MessagingC.rb +903 -0
  49. data/lib/corba/idl/POAC.rb +929 -0
  50. data/lib/corba/idl/TAO_Ext.pidl +45 -0
  51. data/lib/corba/idl/TAO_ExtC.rb +178 -0
  52. data/lib/corba/idl/r2c_orb.rb +571 -0
  53. data/lib/corba/idl/require.rb +19 -0
  54. data/lib/corba/jbase/Any.rb +274 -0
  55. data/lib/corba/jbase/IORMap.rb +35 -0
  56. data/lib/corba/jbase/ORB.rb +111 -0
  57. data/lib/corba/jbase/Object.rb +98 -0
  58. data/lib/corba/jbase/Request.rb +225 -0
  59. data/lib/corba/jbase/Servant.rb +247 -0
  60. data/lib/corba/jbase/ServerRequest.rb +127 -0
  61. data/lib/corba/jbase/Streams.rb +734 -0
  62. data/lib/corba/jbase/Stub.rb +37 -0
  63. data/lib/corba/jbase/Typecode.rb +520 -0
  64. data/lib/corba/jbase/Values.rb +174 -0
  65. data/lib/corba/jbase/exception.rb +106 -0
  66. data/lib/corba/jbase/poa.rb +228 -0
  67. data/lib/corba/jbase/policies.rb +299 -0
  68. data/lib/corba/jbase/post_require.rb +13 -0
  69. data/lib/corba/jbase/require.rb +92 -0
  70. data/lib/corba/naming.rb +13 -0
  71. data/lib/corba/naming_service.rb +14 -0
  72. data/lib/corba/poa.rb +14 -0
  73. data/lib/corba/policies.rb +17 -0
  74. data/lib/corba/require.rb +16 -0
  75. data/lib/corba/svcs/ins/cos_naming.rb +432 -0
  76. data/lib/corba/svcs/ins/ins.rb +525 -0
  77. data/lib/corba/svcs/ins/naming_service.rb +118 -0
  78. data/lib/corba.rb +15 -0
  79. data/lib/ridlbe/ruby/config.rb +340 -0
  80. data/lib/ridlbe/ruby/orb.pidlc +0 -0
  81. data/lib/ridlbe/ruby/require.rb +15 -0
  82. data/lib/ridlbe/ruby/walker.rb +1605 -0
  83. data/mkrf_conf_bingem.rb +149 -0
  84. data/rakelib/bin.rake +79 -0
  85. data/rakelib/bin.rb +145 -0
  86. data/rakelib/build.rake +87 -0
  87. data/rakelib/config.rake +51 -0
  88. data/rakelib/config.rb +542 -0
  89. data/rakelib/ext.rake +183 -0
  90. data/rakelib/ext.rb +277 -0
  91. data/rakelib/ext_r2tao.rb +208 -0
  92. data/rakelib/gem.rake +251 -0
  93. data/rakelib/gem.rb +145 -0
  94. data/rakelib/package.rake +25 -0
  95. data/rakelib/test.rake +22 -0
  96. data/test/BiDirectional/Test.idl +33 -0
  97. data/test/BiDirectional/client.rb +131 -0
  98. data/test/BiDirectional/run_test.rb +67 -0
  99. data/test/BiDirectional/server.rb +167 -0
  100. data/test/CORBA_Services/Naming/BindingIterator/Test.idl +26 -0
  101. data/test/CORBA_Services/Naming/BindingIterator/client.rb +120 -0
  102. data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +81 -0
  103. data/test/CORBA_Services/Naming/BindingIterator/server.rb +108 -0
  104. data/test/CORBA_Services/Naming/Corbaname/Test.idl +26 -0
  105. data/test/CORBA_Services/Naming/Corbaname/client.rb +84 -0
  106. data/test/CORBA_Services/Naming/Corbaname/run_test.rb +87 -0
  107. data/test/CORBA_Services/Naming/Corbaname/server.rb +134 -0
  108. data/test/CORBA_Services/Naming/Simple/Test.idl +26 -0
  109. data/test/CORBA_Services/Naming/Simple/client.rb +83 -0
  110. data/test/CORBA_Services/Naming/Simple/run_test.rb +81 -0
  111. data/test/CORBA_Services/Naming/Simple/server.rb +108 -0
  112. data/test/Collocation/Diamond.idl +38 -0
  113. data/test/Collocation/run_test.rb +51 -0
  114. data/test/Collocation/test.rb +201 -0
  115. data/test/Connect_Timeout/Test.idl +26 -0
  116. data/test/Connect_Timeout/client.rb +109 -0
  117. data/test/Connect_Timeout/run_test.rb +51 -0
  118. data/test/DII/Test.idl +26 -0
  119. data/test/DII/client.rb +114 -0
  120. data/test/DII/run_test.rb +68 -0
  121. data/test/DII/server.rb +94 -0
  122. data/test/DSI/Test.idl +26 -0
  123. data/test/DSI/client.rb +65 -0
  124. data/test/DSI/run_test.rb +68 -0
  125. data/test/DSI/server.rb +105 -0
  126. data/test/Exceptions/Test.idl +47 -0
  127. data/test/Exceptions/client.rb +117 -0
  128. data/test/Exceptions/run_test.rb +68 -0
  129. data/test/Exceptions/server.rb +130 -0
  130. data/test/Hello/Test.idl +26 -0
  131. data/test/Hello/client.rb +77 -0
  132. data/test/Hello/run_test.rb +70 -0
  133. data/test/Hello/server.rb +94 -0
  134. data/test/IDL_Test/Test.idl +116 -0
  135. data/test/IDL_Test/Test_inc.idl +17 -0
  136. data/test/IDL_Test/client.rb +103 -0
  137. data/test/IDL_Test/run_test.rb +68 -0
  138. data/test/IDL_Test/server.rb +103 -0
  139. data/test/IORMap/Test.idl +26 -0
  140. data/test/IORMap/client.rb +72 -0
  141. data/test/IORMap/run_test.rb +68 -0
  142. data/test/IORMap/server.rb +113 -0
  143. data/test/IORTable/Test.idl +26 -0
  144. data/test/IORTable/client.rb +74 -0
  145. data/test/IORTable/run_test.rb +68 -0
  146. data/test/IORTable/server.rb +129 -0
  147. data/test/Implicit_Conversion/Test.idl +30 -0
  148. data/test/Implicit_Conversion/client.rb +112 -0
  149. data/test/Implicit_Conversion/run_test.rb +68 -0
  150. data/test/Implicit_Conversion/server.rb +98 -0
  151. data/test/Multi_Threading/Multiple_ORB/Test.idl +26 -0
  152. data/test/Multi_Threading/Multiple_ORB/client.rb +81 -0
  153. data/test/Multi_Threading/Multiple_ORB/run_test.rb +70 -0
  154. data/test/Multi_Threading/Multiple_ORB/server.rb +107 -0
  155. data/test/Multi_Threading/Simple/Test.idl +26 -0
  156. data/test/Multi_Threading/Simple/client.rb +92 -0
  157. data/test/Multi_Threading/Simple/run_test.rb +68 -0
  158. data/test/Multi_Threading/Simple/server.rb +117 -0
  159. data/test/Multi_Threading/Threads/Test.idl +27 -0
  160. data/test/Multi_Threading/Threads/client.rb +77 -0
  161. data/test/Multi_Threading/Threads/run_test.rb +75 -0
  162. data/test/Multi_Threading/Threads/server.rb +116 -0
  163. data/test/Multi_Threading/Threads/watchdog.rb +87 -0
  164. data/test/Multiple_Servant_Interfaces/Test.idl +33 -0
  165. data/test/Multiple_Servant_Interfaces/client.rb +69 -0
  166. data/test/Multiple_Servant_Interfaces/run_test.rb +68 -0
  167. data/test/Multiple_Servant_Interfaces/server.rb +101 -0
  168. data/test/Nil/Test.idl +26 -0
  169. data/test/Nil/run_test.rb +51 -0
  170. data/test/Nil/test.rb +80 -0
  171. data/test/OBV/AbstractInterface/client.rb +178 -0
  172. data/test/OBV/AbstractInterface/run_test.rb +68 -0
  173. data/test/OBV/AbstractInterface/server.rb +149 -0
  174. data/test/OBV/AbstractInterface/test.idl +52 -0
  175. data/test/OBV/Custom/OBV.idl +18 -0
  176. data/test/OBV/Custom/OBV_impl.rb +41 -0
  177. data/test/OBV/Custom/client.rb +85 -0
  178. data/test/OBV/Custom/run_test.rb +68 -0
  179. data/test/OBV/Custom/server.rb +99 -0
  180. data/test/OBV/Simple/OBV.idl +15 -0
  181. data/test/OBV/Simple/OBV_impl.rb +26 -0
  182. data/test/OBV/Simple/client.rb +85 -0
  183. data/test/OBV/Simple/run_test.rb +68 -0
  184. data/test/OBV/Simple/server.rb +99 -0
  185. data/test/OBV/Simple_Event/Event.idl +15 -0
  186. data/test/OBV/Simple_Event/Event_impl.rb +26 -0
  187. data/test/OBV/Simple_Event/client.rb +85 -0
  188. data/test/OBV/Simple_Event/run_test.rb +68 -0
  189. data/test/OBV/Simple_Event/server.rb +99 -0
  190. data/test/OBV/Supports/client.rb +115 -0
  191. data/test/OBV/Supports/run_test.rb +68 -0
  192. data/test/OBV/Supports/server.rb +102 -0
  193. data/test/OBV/Supports/supports.idl +32 -0
  194. data/test/OBV/Supports/supports_impl.rb +59 -0
  195. data/test/OBV/Tree/client.rb +115 -0
  196. data/test/OBV/Tree/run_test.rb +68 -0
  197. data/test/OBV/Tree/server.rb +116 -0
  198. data/test/OBV/Tree/test.idl +31 -0
  199. data/test/OBV/Truncatable/Extra.idl +26 -0
  200. data/test/OBV/Truncatable/Truncatable.idl +105 -0
  201. data/test/OBV/Truncatable/Truncatable_impl.rb +85 -0
  202. data/test/OBV/Truncatable/client.rb +278 -0
  203. data/test/OBV/Truncatable/run_test.rb +68 -0
  204. data/test/OBV/Truncatable/server.rb +88 -0
  205. data/test/OBV/ValueBox/client.rb +497 -0
  206. data/test/OBV/ValueBox/run_test.rb +68 -0
  207. data/test/OBV/ValueBox/server.rb +271 -0
  208. data/test/OBV/ValueBox/valuebox.idl +101 -0
  209. data/test/OBV/ValueBox/vb_basic.idl +75 -0
  210. data/test/OBV/ValueBox/vb_struct.idl +68 -0
  211. data/test/OBV/ValueBox/vb_union.idl +21 -0
  212. data/test/Object/Test.idl +26 -0
  213. data/test/Object/client.rb +111 -0
  214. data/test/Object/run_test.rb +68 -0
  215. data/test/Object/server.rb +125 -0
  216. data/test/POA/Test.idl +27 -0
  217. data/test/POA/run_test.rb +51 -0
  218. data/test/POA/test.rb +111 -0
  219. data/test/Param_Test/Test.idl +182 -0
  220. data/test/Param_Test/client.rb +276 -0
  221. data/test/Param_Test/run_test.rb +68 -0
  222. data/test/Param_Test/server.rb +295 -0
  223. data/test/Performance/Simple/Test.idl +26 -0
  224. data/test/Performance/Simple/client.rb +89 -0
  225. data/test/Performance/Simple/run_test.rb +68 -0
  226. data/test/Performance/Simple/server.rb +94 -0
  227. data/test/Policies/Test.idl +26 -0
  228. data/test/Policies/run_test.rb +51 -0
  229. data/test/Policies/test.rb +142 -0
  230. data/test/Timeout/client.rb +206 -0
  231. data/test/Timeout/run_test.rb +68 -0
  232. data/test/Timeout/server.rb +108 -0
  233. data/test/Timeout/test.idl +18 -0
  234. data/test/lib/assert.rb +41 -0
  235. data/test/lib/test.rb +546 -0
  236. data/test/test_runner.rb +191 -0
  237. metadata +318 -0
@@ -0,0 +1,525 @@
1
+ #--------------------------------------------------------------------
2
+ # ins.rb - main file for R2CORBA INS service
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # This program is free software; you can redistribute it and/or
7
+ # modify it under the terms of the R2CORBA LICENSE which is
8
+ # included with this program.
9
+ #
10
+ # Copyright (c) Remedy IT Expertise BV
11
+ #--------------------------------------------------------------------
12
+
13
+ require 'corba/svcs/ins/naming_service'
14
+ require 'optparse'
15
+
16
+ module R2CORBA
17
+ module INS
18
+ INS_VERSION_MAJOR = 0
19
+ INS_VERSION_MINOR = 1
20
+ INS_VERSION_RELEASE = 1
21
+ INS_COPYRIGHT = "Copyright (c) 2011-#{Time.now.year} Remedy IT Expertise BV, The Netherlands".freeze
22
+
23
+ IS_WIN32 = (RUBY_PLATFORM =~ /win32/ || RUBY_PLATFORM =~ /mingw/ || ENV['OS'] =~ /windows/i) ? true : false
24
+ IS_JRUBY = defined?(JRUBY_VERSION)
25
+
26
+ @@daemons_installed = false
27
+
28
+ unless IS_WIN32 || IS_JRUBY
29
+ begin
30
+ require 'rubygems'
31
+ require 'daemons'
32
+ @@daemons_installed = true
33
+ rescue LoadError
34
+ STDERR.puts 'Daemon functionality requires installed "daemons" GEM.'
35
+ end
36
+ end
37
+
38
+ def INS.daemons_installed
39
+ @@daemons_installed
40
+ end
41
+
42
+ class Controller
43
+ def initialize(options)
44
+ @options = options
45
+ end
46
+
47
+ def report(msg)
48
+ STDERR.puts msg if @options[:verbose]
49
+ end
50
+ end
51
+
52
+ if IS_WIN32 || IS_JRUBY || !INS.daemons_installed
53
+ class Controller
54
+ def start
55
+ report 'INS - initializing service'
56
+
57
+ if self.pidfile_exists?
58
+ rc, pid = self.check_pidfile
59
+ if rc
60
+ STDERR.puts "ERROR: INS - existing PID file #{self.pidfile} found; service may still be alive"
61
+ exit 1
62
+ else
63
+ File.delete(self.pidfile)
64
+ end
65
+ end
66
+
67
+ begin
68
+ File.open(self.pidfile, File::CREAT | File::EXCL | File::WRONLY) do |f|
69
+ f.write Process.pid
70
+ end
71
+ report "INS - PID \##{Process.pid} written to '#{self.pidfile}'"
72
+ rescue ::Exception
73
+ STDERR.puts "ERROR: INS - failed to write PID file #{self.pidfile}"
74
+ exit 1
75
+ end
76
+
77
+ $ins_service_pid_file = self.pidfile
78
+ at_exit {
79
+ File.delete($ins_service_pid_file)
80
+ }
81
+
82
+ # initialize service
83
+ ins_svc = INS::Service.new(@options)
84
+
85
+ report 'INS - running service'
86
+
87
+ stop_proc = Proc.new do
88
+ report 'INS - shutting down'
89
+ begin; ins_svc.shutdown; rescue ::Exception; STDERR.puts "#{$!}\n#{$!.backtrace.join("\n")}"; end
90
+ end
91
+ Signal.trap('INT', stop_proc)
92
+ Signal.trap('TERM', stop_proc)
93
+
94
+ ins_svc.setup
95
+
96
+ ins_svc.run
97
+
98
+ report 'INS - stopped'
99
+ end
100
+
101
+ def stop
102
+ report 'INS - stopping service'
103
+
104
+ rc, pid = self.check_pidfile()
105
+
106
+ if pid
107
+ report 'INS - signalling service'
108
+ if IS_WIN32
109
+ Kernel.system("taskkill /PID #{pid} /F")
110
+ File.delete(self.pidfile)
111
+ else
112
+ Process.kill(:TERM, pid) rescue nil
113
+ end
114
+ end
115
+ end
116
+
117
+ def status
118
+ report 'INS - retrieving service status'
119
+
120
+ rc, pid = self.check_pidfile()
121
+
122
+ if pid
123
+ if rc
124
+ STDERR.puts "found PID #{pid} in file #{pidfile} : process is alive"
125
+ else
126
+ STDERR.puts "found PID #{pid} in file #{pidfile} : process is not running"
127
+ exit 1
128
+ end
129
+ end
130
+ end
131
+
132
+ protected
133
+ def pidfile
134
+ @pidfile ||= File.join(@options[:piddir], 'ins.rb.pid')
135
+ end
136
+
137
+ def pidfile_exists?
138
+ File.exist?(self.pidfile)
139
+ end
140
+
141
+ def check_pidfile
142
+ pid = nil
143
+ begin
144
+ File.open(self.pidfile, 'r') do |f|
145
+ pid = f.read.to_i
146
+ end
147
+ rescue ::Exception
148
+ STDERR.puts "ERROR: INS - failed to read PID file #{self.pidfile}"
149
+ return [false, nil]
150
+ end
151
+
152
+ begin
153
+ Process.kill(0, pid)
154
+ return [true, pid]
155
+ rescue ::Exception
156
+ return [false, pid]
157
+ end
158
+ end
159
+ end # Controller
160
+ else
161
+ # Service controller for *nix platforms
162
+ #
163
+ require 'rubygems'
164
+ require 'daemons'
165
+
166
+ class ::Daemons::Application
167
+ def exit
168
+ # make exit() call a NOOP here
169
+ # Daemons calls this when shutting down and that messes up our clean shutdown
170
+ # STDERR.puts 'exit NOOP'
171
+ end
172
+ end
173
+
174
+ class Controller
175
+ def start
176
+ report 'INS - initializing service'
177
+ # initialize service
178
+ ins_svc = INS::Service.new(@options)
179
+
180
+ if @options[:daemon]
181
+ report 'INS - starting daemon mode'
182
+
183
+ daemon_opt = {
184
+ :app_name => 'rins',
185
+ :ARGV => ['start'],
186
+ :dir_mode => :normal,
187
+ :dir => @options[:piddir],
188
+ :multiple => true,
189
+ :log_dir => @options[:logdir] || @options[:piddir],
190
+ :log_output => true,
191
+ :stop_proc => Proc.new do
192
+ report 'INS - shutting down'
193
+ ins_svc.shutdown
194
+ end
195
+ }
196
+
197
+ Daemons.run_proc('ins.rb', daemon_opt) do
198
+ report 'INS - daemon started'
199
+
200
+ ins_svc.setup
201
+
202
+ ins_svc.run
203
+
204
+ report 'INS - stopped'
205
+ end
206
+ else
207
+ report 'INS - running service in foreground'
208
+
209
+ if self.pidfile_exists?
210
+ rc, pid = self.check_pidfile
211
+ if rc
212
+ STDERR.puts "ERROR: INS - existing PID file #{self.pidfile} found; service may still be alive"
213
+ exit 1
214
+ else
215
+ File.delete(self.pidfile)
216
+ end
217
+ end
218
+
219
+ begin
220
+ File.open(self.pidfile, File::CREAT | File::EXCL | File::WRONLY) do |f|
221
+ f.write Process.pid
222
+ end
223
+ report "INS - PID \##{Process.pid} written to '#{self.pidfile}'"
224
+ rescue ::Exception
225
+ STDERR.puts "ERROR: INS - failed to write PID file #{self.pidfile}"
226
+ exit 1
227
+ end
228
+
229
+ $ins_service_pid_file = self.pidfile
230
+ at_exit {
231
+ File.delete($ins_service_pid_file)
232
+ }
233
+
234
+ stop_proc = Proc.new do
235
+ report 'INS - shutting down'
236
+ begin; ins_svc.shutdown; rescue ::Exception; STDERR.puts "#{$!}\n#{$!.backtrace.join("\n")}"; end
237
+ end
238
+ Signal.trap('INT', stop_proc)
239
+ Signal.trap('TERM', stop_proc)
240
+
241
+ ins_svc.setup
242
+
243
+ ins_svc.run
244
+
245
+ report 'INS - stopped'
246
+
247
+ exit(0)
248
+ end
249
+ end
250
+
251
+ def stop
252
+ report 'INS - stopping service'
253
+ if @options[:daemon]
254
+ daemon_opt = {
255
+ :app_name => 'rins',
256
+ :ARGV => ['stop'],
257
+ :dir_mode => :normal,
258
+ :dir => @options[:piddir],
259
+ :multiple => true,
260
+ }
261
+
262
+ Daemons.run_proc('ins.rb', daemon_opt) {}
263
+ else
264
+ rc, pid = self.check_pidfile()
265
+
266
+ if pid
267
+ report 'INS - signalling service'
268
+ Process.kill(:TERM, pid) rescue nil
269
+ end
270
+ end
271
+ end
272
+
273
+ def restart
274
+ if @options[:daemon]
275
+ report 'INS - initializing service'
276
+ # initialize service
277
+ ins_svc = INS::Service.new(@options)
278
+
279
+ report 'INS - restarting daemon mode'
280
+
281
+ daemon_opt = {
282
+ :app_name => 'rins',
283
+ :ARGV => ['restart'],
284
+ :dir_mode => :normal,
285
+ :dir => @options[:piddir],
286
+ :multiple => true,
287
+ :log_dir => @options[:logdir] || @options[:piddir],
288
+ :log_output => true,
289
+ :stop_proc => Proc.new do
290
+ report 'INS - shutting down'
291
+ ins_svc.shutdown
292
+ end
293
+ }
294
+
295
+ Daemons.run_proc('ins.rb', daemon_opt) do
296
+ report 'INS - daemon started'
297
+
298
+ ins_svc.setup
299
+
300
+ ins_svc.run
301
+
302
+ report 'INS - stopped'
303
+ end
304
+ else
305
+ STDERR.puts 'INS - restart command is only functional in daemon mode'
306
+ exit 1
307
+ end
308
+ end
309
+
310
+ def status
311
+ report 'INS - retrieving service status'
312
+ daemon_opt = {
313
+ :app_name => 'rins',
314
+ :ARGV => ['status'],
315
+ :dir_mode => :normal,
316
+ :dir => @options[:piddir],
317
+ :multiple => true,
318
+ }
319
+
320
+ Daemons.run_proc('ins.rb', daemon_opt) {}
321
+ end
322
+
323
+ protected
324
+ def pidfile
325
+ @pidfile ||= File.join(@options[:piddir], 'ins.rb.pid')
326
+ end
327
+
328
+ def pidfile_exists?
329
+ File.exist?(self.pidfile)
330
+ end
331
+
332
+ def check_pidfile
333
+ pid = nil
334
+ begin
335
+ File.open(self.pidfile, 'r') do |f|
336
+ pid = f.read.to_i
337
+ end
338
+ rescue ::Exception
339
+ STDERR.puts "ERROR: INS - failed to read PID file #{self.pidfile}"
340
+ return [false, nil]
341
+ end
342
+
343
+ begin
344
+ Process.kill(0, pid)
345
+ return [true, pid]
346
+ rescue ::Exception
347
+ return [false, pid]
348
+ end
349
+ end
350
+ end # Controller
351
+ end
352
+
353
+ OPTIONS = {
354
+ :piddir => Dir.getwd,
355
+ :iorfile => 'ins.ior',
356
+ :debug => 0,
357
+ :logdir => nil,
358
+ :threads => 5,
359
+ :orbprop => {},
360
+ :port => 0,
361
+ }
362
+
363
+ COMMANDS = [
364
+ :start,
365
+ :stop,
366
+ :restart,
367
+ :status,
368
+ :help,
369
+ :version
370
+ ]
371
+ if IS_JRUBY
372
+ COMMANDS.delete(:restart)
373
+ end
374
+ if IS_WIN32
375
+ COMMANDS << :install
376
+ COMMANDS << :remove
377
+ end
378
+
379
+ @@command = nil
380
+
381
+ def INS.command
382
+ @@command
383
+ end
384
+
385
+ def INS.parse_arg
386
+ script_name = File.basename($0, '.bat')
387
+ if not script_name =~ /rins/
388
+ script_name = 'ruby ' + $0
389
+ end
390
+
391
+ @@command = ARGV.shift.to_sym unless ARGV.empty?
392
+ unless COMMANDS.include?(@@command)
393
+ STDERR.puts "ERROR: Invalid command [#{command}]!\n" +
394
+ "Usage: #{script_name} #{COMMANDS.join('|')} [options]\n"
395
+ exit 1
396
+ end
397
+
398
+ # extract -ORBxxx aguments
399
+ f_ = false
400
+ ARGV.collect! { |a|
401
+ if f_
402
+ f_ = false
403
+ OPTIONS[:orbprop] << a
404
+ nil
405
+ else
406
+ f_ = /^-ORB/ =~ a
407
+ OPTIONS[:orbprop] << a if f_
408
+ f_ ? nil : a
409
+ end
410
+ }.compact!
411
+
412
+ case @@command
413
+ when :help
414
+ puts "Usage: #{script_name} #{COMMANDS.join('|')} [options]\n"
415
+ puts "\n"
416
+ puts " #{script_name} #{(COMMANDS - [:help, :version]).join('|')} --help\n"
417
+ puts " provides help for the specified command\n\n"
418
+ exit
419
+ when :version
420
+ puts "R2CORBA Interoperable Naming Service (INS) #{INS_VERSION_MAJOR}.#{INS_VERSION_MINOR}.#{INS_VERSION_RELEASE}"
421
+ puts INS_COPYRIGHT
422
+ puts ''
423
+ exit
424
+ when :start, :restart
425
+ ARGV.options do |opts|
426
+ opts.banner = "Usage: #{script_name} start [options]"
427
+
428
+ opts.separator ''
429
+
430
+ opts.on('-i FILE', '--ior=FILE', String,
431
+ 'Specifies filename (incl. path) to write IOR to.',
432
+ 'Default: ./ins.ior') { |v| OPTIONS[:iorfile] = v }
433
+ unless IS_WIN32
434
+ opts.on('-p DIR', '--pid=DIR', String,
435
+ 'Specifies path to write pidfile to.',
436
+ 'Default: ./') { |v| OPTIONS[:piddir] = v }
437
+ unless IS_JRUBY
438
+ opts.on('-o DIR', '--output=DIR', String,
439
+ 'Specifies filename to write logfile to.',
440
+ 'Default: <piddir>') { |v| OPTIONS[:logdir] = v }
441
+ end
442
+ else
443
+ opts.on('-o DIR', '--output=DIR', String,
444
+ 'Specifies path to write logfile to.',
445
+ 'Default: ./') { |v| OPTIONS[:logdir] = v }
446
+ end
447
+ opts.on('-l PORTNUM', '--listen=PORTNUM', Integer,
448
+ 'Specifies port number for service endpoint.',
449
+ 'Default: none') { |v| OPTIONS[:port] = v }
450
+ if IS_JRUBY or R2CORBA::TAO::RUBY_THREAD_SUPPORT
451
+ opts.on('-t THREADNUM', '--threads=THREADNUM', Integer,
452
+ 'Specifies (minimum) number of threads for service.',
453
+ 'Default: 5') { |v| OPTIONS[:threads] = v }
454
+ end
455
+
456
+ unless IS_JRUBY || !INS.daemons_installed
457
+ opts.on('-d', '--daemon',
458
+ 'Run as daemon.',
459
+ 'Default: off') { |v| OPTIONS[:daemon] = v }
460
+ end
461
+ opts.on('-v', '--verbose',
462
+ 'Run verbose.',
463
+ 'Default: off') { |v| OPTIONS[:verbose] = v }
464
+
465
+ opts.on('--debug=LVL', Integer,
466
+ 'Specifies debug level.',
467
+ 'Default: 0') { |v| OPTIONS[:debug] = v }
468
+
469
+ opts.separator ''
470
+
471
+ opts.on('-h', '--help',
472
+ 'Show this help message.') { puts opts; puts; exit }
473
+
474
+ opts.parse!
475
+ end
476
+ OPTIONS[:iorfile] = File.expand_path(OPTIONS[:iorfile])
477
+ when :stop, :status
478
+ ARGV.options do |opts|
479
+ opts.banner = "Usage: #{script_name} stop [options]"
480
+
481
+ opts.separator ''
482
+
483
+ unless IS_WIN32
484
+ opts.on('-p DIR', '--pid=DIR', String,
485
+ 'Specifies path where pidfile is stored.',
486
+ 'Default: ./') { |v| OPTIONS[:piddir] = v }
487
+ end
488
+
489
+ unless @@command == 'status'
490
+ OPTIONS[:daemon] = true unless IS_JRUBY || !INS.daemons_installed
491
+ opts.on('--[no-]daemon',
492
+ 'Do not run in daemon mode.',
493
+ "Default: #{OPTIONS[:daemon] ? 'on' : 'off'}") { |v| OPTIONS[:daemon] = v }
494
+ end
495
+ opts.on('-v', '--verbose',
496
+ 'Run verbose.',
497
+ 'Default: off') { |v| OPTIONS[:verbose] = v }
498
+
499
+ opts.separator ''
500
+
501
+ opts.on('-h', '--help',
502
+ 'Show this help message.') { puts opts; puts; exit }
503
+
504
+ opts.parse!
505
+ end
506
+ when :install
507
+ when :remove
508
+ end
509
+ OPTIONS[:piddir] = File.expand_path(OPTIONS[:piddir]) if OPTIONS[:piddir]
510
+ OPTIONS[:logdir] = File.expand_path(OPTIONS[:logdir]) if OPTIONS[:logdir]
511
+ end
512
+
513
+ def INS.run
514
+ self.parse_arg()
515
+
516
+ Controller.new(OPTIONS).send(self.command)
517
+ end
518
+ end
519
+ end
520
+
521
+ if __FILE__ == $0
522
+
523
+ R2CORBA::INS.run
524
+
525
+ end
@@ -0,0 +1,118 @@
1
+ #--------------------------------------------------------------------
2
+ # naming_service.rb - Implementation of Naming Service
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # This program is free software; you can redistribute it and/or
7
+ # modify it under the terms of the R2CORBA LICENSE which is
8
+ # included with this program.
9
+ #
10
+ # Copyright (c) Remedy IT Expertise BV
11
+ #--------------------------------------------------------------------
12
+
13
+ require 'corba'
14
+ require 'corba/svcs/ins/cos_naming'
15
+
16
+ module R2CORBA
17
+ module INS
18
+ class Service
19
+ # default options
20
+ OPTIONS = {
21
+ :iorfile => 'ins.ior',
22
+ :debug => 0,
23
+ :threads => 5,
24
+ :orbprop => {},
25
+ :port => 0
26
+ }
27
+
28
+ def initialize(options = {})
29
+ @options = OPTIONS.merge(options)
30
+ raise 'nr. of threads must >= 1' if @options[:threads] < 1
31
+ end
32
+
33
+ def setup
34
+ # process options
35
+ #
36
+ if defined?(JRUBY_VERSION)
37
+ @options[:orbprop]['jacorb.poa.thread_pool_min'] = @options[:threads]
38
+ @options[:orbprop]['jacorb.poa.thread_pool_max'] = @options[:threads] * 4
39
+ if @options[:debug] > 0
40
+ @options[:orbprop]['jacorb.log.default.verbosity'] = case
41
+ when @options[:debug] < 2
42
+ 1
43
+ when (2...4) === @options[:debug]
44
+ 2
45
+ when (5...7) === @options[:debug]
46
+ 3
47
+ when @options[:debug] > 7
48
+ 4
49
+ end
50
+ end
51
+ if @options[:port] > 0
52
+ @options[:orbprop]['OAPort'] = @options[:port]
53
+ end
54
+ else
55
+ if @options[:debug] > 0
56
+ @options[:orbprop]['-ORBDebugLevel'] = @options[:debug]
57
+ end
58
+ if @options[:port] > 0
59
+ @options[:orbprop]['-ORBListenEndpoints'] = "iiop://:#{@options[:port]}"
60
+ end
61
+ end
62
+
63
+ # initialize ORB and POA.
64
+ #
65
+ @orb = CORBA.ORB_init('INS_ORB', @options[:orbprop])
66
+
67
+ obj = @orb.resolve_initial_references('RootPOA')
68
+
69
+ root_poa = PortableServer::POA._narrow(obj)
70
+
71
+ poa_man = root_poa.the_POAManager
72
+
73
+ poa_man.activate
74
+
75
+ # create and activate root Naming context
76
+ #
77
+ @naming_srv = INS::NamingContext.new(@orb)
78
+
79
+ naming_obj = @naming_srv._this()
80
+
81
+ naming_ior = @orb.object_to_string(naming_obj)
82
+
83
+ # simplify Corbaloc urls (corbaloc:iiop:[host][:port]/NamingService)
84
+ #
85
+ @orb.ior_map.map_ior('NamingService', naming_ior)
86
+
87
+ # save INS IOR to file
88
+ #
89
+ open(@options[:iorfile], 'w') { |io|
90
+ io.write naming_ior
91
+ }
92
+ end
93
+
94
+ def run
95
+ STDERR.puts 'INS - starting service run' if @options[:verbose]
96
+ if defined?(JRUBY_VERSION) or !R2CORBA::TAO::RUBY_THREAD_SUPPORT
97
+ STDERR.puts 'INS - running ORB' if @options[:verbose]
98
+ @orb.run
99
+ else
100
+ STDERR.puts "INS - starting #{@options[:threads]} ORB threads" if @options[:verbose]
101
+ @threads = []
102
+ @options[:threads].times do
103
+ @threads << Thread.new(@orb) { |orb| orb.run }
104
+ end
105
+ STDERR.puts 'INS - joining ORB threads' if @options[:verbose]
106
+ @threads.each { |t| t.join }
107
+ end
108
+ STDERR.puts 'INS - service run ended' if @options[:verbose]
109
+ end
110
+
111
+ def shutdown
112
+ STDERR.puts 'INS - shutting down ORB' if @options[:verbose]
113
+ @orb.shutdown if @orb
114
+ STDERR.puts 'INS - shutdown finished' if @options[:verbose]
115
+ end
116
+ end
117
+ end
118
+ end
data/lib/corba.rb ADDED
@@ -0,0 +1,15 @@
1
+ #--------------------------------------------------------------------
2
+ # corba.rb -
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # This program is free software; you can redistribute it and/or
7
+ # modify it under the terms of the R2CORBA LICENSE which is
8
+ # included with this program.
9
+ #
10
+ # Copyright (c) Remedy IT Expertise BV
11
+ #--------------------------------------------------------------------
12
+
13
+ require 'corba/require.rb'
14
+
15
+ include R2CORBA