datawire_mdk 2.0.5
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.
- checksums.yaml +7 -0
- data/lib/datawire-quark-core.rb +1213 -0
- data/lib/datawire_mdk_md.rb +54752 -0
- data/lib/mdk.rb +962 -0
- data/lib/mdk_discovery.rb +1518 -0
- data/lib/mdk_discovery/protocol.rb +818 -0
- data/lib/mdk_discovery/synapse.rb +267 -0
- data/lib/mdk_introspection.rb +281 -0
- data/lib/mdk_introspection/aws.rb +101 -0
- data/lib/mdk_introspection/kubernetes.rb +125 -0
- data/lib/mdk_protocol.rb +1255 -0
- data/lib/mdk_runtime.rb +2135 -0
- data/lib/mdk_runtime/actors.rb +457 -0
- data/lib/mdk_runtime/files.rb +575 -0
- data/lib/mdk_runtime/promise.rb +814 -0
- data/lib/mdk_tracing.rb +369 -0
- data/lib/mdk_tracing/api.rb +188 -0
- data/lib/mdk_tracing/protocol.rb +850 -0
- data/lib/mdk_util.rb +141 -0
- data/lib/quark.rb +3684 -0
- data/lib/quark/behaviors.rb +494 -0
- data/lib/quark/concurrent.rb +1250 -0
- data/lib/quark/error.rb +84 -0
- data/lib/quark/logging.rb +278 -0
- data/lib/quark/mock.rb +1223 -0
- data/lib/quark/os.rb +286 -0
- data/lib/quark/reflect.rb +489 -0
- data/lib/quark/spi.rb +130 -0
- data/lib/quark/spi_api.rb +489 -0
- data/lib/quark/spi_api_tracing.rb +1426 -0
- data/lib/quark/test.rb +766 -0
- metadata +142 -0
data/lib/mdk_runtime.rb
ADDED
@@ -0,0 +1,2135 @@
|
|
1
|
+
# Quark 1.0.406 run at 2016-08-31 13:21:53.028839
|
2
|
+
module Quark
|
3
|
+
require "quark"
|
4
|
+
def self.mdk_runtime; MdkRuntime; end
|
5
|
+
module MdkRuntime
|
6
|
+
require "datawire-quark-core"
|
7
|
+
require_relative 'quark/reflect' # 0 ('quark',) ()
|
8
|
+
require_relative 'datawire_mdk_md' # 0 () ()
|
9
|
+
require_relative 'mdk_runtime/actors' # 0 ('mdk_runtime',) ()
|
10
|
+
require_relative 'mdk_runtime/files' # 0 ('mdk_runtime',) ()
|
11
|
+
require_relative 'mdk_runtime/promise' # 0 ('mdk_runtime',) ()
|
12
|
+
require_relative 'quark/error' # 0 ('quark',) ()
|
13
|
+
require_relative 'quark' # 0 () ()
|
14
|
+
require_relative 'quark/concurrent' # 0 ('quark',) ()
|
15
|
+
require_relative 'quark/os' # 0 ('quark',) ()
|
16
|
+
|
17
|
+
|
18
|
+
def self.Dependencies; Dependencies; end
|
19
|
+
##
|
20
|
+
# Trivial dependency injection setup.
|
21
|
+
|
22
|
+
class Dependencies < ::DatawireQuarkCore::QuarkObject
|
23
|
+
attr_accessor :_services
|
24
|
+
extend ::DatawireQuarkCore::Static
|
25
|
+
|
26
|
+
static mdk_runtime_Dependencies_ref: -> { nil }
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
def initialize()
|
31
|
+
self.__init_fields__
|
32
|
+
|
33
|
+
nil
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
##
|
40
|
+
# Register a service object.
|
41
|
+
|
42
|
+
def registerService(name, service)
|
43
|
+
|
44
|
+
if (((self)._services).key?(name))
|
45
|
+
raise ((("Can't register service '") + (name)) + ("' twice."))
|
46
|
+
end
|
47
|
+
((self)._services)[name] = (service)
|
48
|
+
|
49
|
+
nil
|
50
|
+
end
|
51
|
+
|
52
|
+
##
|
53
|
+
# Look up a service by name.
|
54
|
+
|
55
|
+
def getService(name)
|
56
|
+
|
57
|
+
if (!(((self)._services).key?(name)))
|
58
|
+
raise ((("Service '") + (name)) + ("' not found!"))
|
59
|
+
end
|
60
|
+
return ((self)._services)[name]
|
61
|
+
|
62
|
+
nil
|
63
|
+
end
|
64
|
+
|
65
|
+
##
|
66
|
+
# Return whether the service exists.
|
67
|
+
|
68
|
+
def hasService(name)
|
69
|
+
|
70
|
+
return ((self)._services).key?(name)
|
71
|
+
|
72
|
+
nil
|
73
|
+
end
|
74
|
+
|
75
|
+
def _getClass()
|
76
|
+
|
77
|
+
return "mdk_runtime.Dependencies"
|
78
|
+
|
79
|
+
nil
|
80
|
+
end
|
81
|
+
|
82
|
+
def _getField(name)
|
83
|
+
|
84
|
+
if ((name) == ("_services"))
|
85
|
+
return (self)._services
|
86
|
+
end
|
87
|
+
return nil
|
88
|
+
|
89
|
+
nil
|
90
|
+
end
|
91
|
+
|
92
|
+
def _setField(name, value)
|
93
|
+
|
94
|
+
if ((name) == ("_services"))
|
95
|
+
(self)._services = ::DatawireQuarkCore.cast(value) { ::Hash }
|
96
|
+
end
|
97
|
+
|
98
|
+
nil
|
99
|
+
end
|
100
|
+
|
101
|
+
def __init_fields__()
|
102
|
+
|
103
|
+
self._services = {}
|
104
|
+
|
105
|
+
nil
|
106
|
+
end
|
107
|
+
|
108
|
+
|
109
|
+
end
|
110
|
+
Dependencies.unlazy_statics
|
111
|
+
|
112
|
+
def self.MDKRuntime; MDKRuntime; end
|
113
|
+
##
|
114
|
+
# Runtime environment for a particular MDK instance.
|
115
|
+
#
|
116
|
+
# Required registered services:
|
117
|
+
# - 'time': A provider of mdk_runtime.Time;
|
118
|
+
# - 'schedule': Implements the mdk_runtime.ScheduleActor actor protocol.
|
119
|
+
# - 'websockets': A provider of mdk_runtime.WebSockets.
|
120
|
+
#
|
121
|
+
|
122
|
+
class MDKRuntime < ::DatawireQuarkCore::QuarkObject
|
123
|
+
attr_accessor :dependencies, :dispatcher
|
124
|
+
extend ::DatawireQuarkCore::Static
|
125
|
+
|
126
|
+
static mdk_runtime_MDKRuntime_ref: -> { nil }
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
def initialize()
|
131
|
+
self.__init_fields__
|
132
|
+
|
133
|
+
nil
|
134
|
+
end
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
##
|
140
|
+
# Return Time service.
|
141
|
+
|
142
|
+
def getTimeService()
|
143
|
+
|
144
|
+
return ::DatawireQuarkCore.cast((self).dependencies.getService("time")) { ::Quark.mdk_runtime.Time }
|
145
|
+
|
146
|
+
nil
|
147
|
+
end
|
148
|
+
|
149
|
+
##
|
150
|
+
# Return Schedule service.
|
151
|
+
|
152
|
+
def getScheduleService()
|
153
|
+
|
154
|
+
return ::DatawireQuarkCore.cast((self).dependencies.getService("schedule")) { ::Quark.mdk_runtime.actors.Actor }
|
155
|
+
|
156
|
+
nil
|
157
|
+
end
|
158
|
+
|
159
|
+
##
|
160
|
+
# Return WebSockets service.
|
161
|
+
|
162
|
+
def getWebSocketsService()
|
163
|
+
|
164
|
+
return ::DatawireQuarkCore.cast((self).dependencies.getService("websockets")) { ::Quark.mdk_runtime.WebSockets }
|
165
|
+
|
166
|
+
nil
|
167
|
+
end
|
168
|
+
|
169
|
+
##
|
170
|
+
# Return File service.
|
171
|
+
|
172
|
+
def getFileService()
|
173
|
+
|
174
|
+
return ::DatawireQuarkCore.cast((self).dependencies.getService("files")) { ::Quark.mdk_runtime.files.FileActor }
|
175
|
+
|
176
|
+
nil
|
177
|
+
end
|
178
|
+
|
179
|
+
##
|
180
|
+
# Return EnvironmentVariables service.
|
181
|
+
|
182
|
+
def getEnvVarsService()
|
183
|
+
|
184
|
+
return ::DatawireQuarkCore.cast((self).dependencies.getService("envvar")) { ::Quark.mdk_runtime.EnvironmentVariables }
|
185
|
+
|
186
|
+
nil
|
187
|
+
end
|
188
|
+
|
189
|
+
##
|
190
|
+
# Stop all Actors that are started by default (i.e. files, schedule).
|
191
|
+
|
192
|
+
def stop()
|
193
|
+
|
194
|
+
(self).dispatcher.stopActor(self.getFileService())
|
195
|
+
(self).dispatcher.stopActor(self.getScheduleService())
|
196
|
+
(self).dispatcher.stopActor(self.getWebSocketsService())
|
197
|
+
|
198
|
+
nil
|
199
|
+
end
|
200
|
+
|
201
|
+
def _getClass()
|
202
|
+
|
203
|
+
return "mdk_runtime.MDKRuntime"
|
204
|
+
|
205
|
+
nil
|
206
|
+
end
|
207
|
+
|
208
|
+
def _getField(name)
|
209
|
+
|
210
|
+
if ((name) == ("dependencies"))
|
211
|
+
return (self).dependencies
|
212
|
+
end
|
213
|
+
if ((name) == ("dispatcher"))
|
214
|
+
return (self).dispatcher
|
215
|
+
end
|
216
|
+
return nil
|
217
|
+
|
218
|
+
nil
|
219
|
+
end
|
220
|
+
|
221
|
+
def _setField(name, value)
|
222
|
+
|
223
|
+
if ((name) == ("dependencies"))
|
224
|
+
(self).dependencies = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.Dependencies }
|
225
|
+
end
|
226
|
+
if ((name) == ("dispatcher"))
|
227
|
+
(self).dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
|
228
|
+
end
|
229
|
+
|
230
|
+
nil
|
231
|
+
end
|
232
|
+
|
233
|
+
def __init_fields__()
|
234
|
+
|
235
|
+
self.dependencies = ::Quark.mdk_runtime.Dependencies.new()
|
236
|
+
self.dispatcher = ::Quark.mdk_runtime.actors.MessageDispatcher.new()
|
237
|
+
|
238
|
+
nil
|
239
|
+
end
|
240
|
+
|
241
|
+
|
242
|
+
end
|
243
|
+
MDKRuntime.unlazy_statics
|
244
|
+
|
245
|
+
def self.Time; Time; end
|
246
|
+
##
|
247
|
+
# Return current time.
|
248
|
+
#
|
249
|
+
|
250
|
+
class Time < ::DatawireQuarkCore::QuarkObject
|
251
|
+
extend ::DatawireQuarkCore::Static
|
252
|
+
|
253
|
+
static mdk_runtime_Time_ref: -> { nil }
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
def initialize()
|
258
|
+
self.__init_fields__
|
259
|
+
|
260
|
+
nil
|
261
|
+
end
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
##
|
267
|
+
# Return the current time in seconds since the Unix epoch.
|
268
|
+
#
|
269
|
+
|
270
|
+
def time()
|
271
|
+
raise NotImplementedError, '`Time.time` is an abstract method'
|
272
|
+
|
273
|
+
nil
|
274
|
+
end
|
275
|
+
|
276
|
+
def __init_fields__()
|
277
|
+
|
278
|
+
|
279
|
+
nil
|
280
|
+
end
|
281
|
+
|
282
|
+
|
283
|
+
end
|
284
|
+
Time.unlazy_statics
|
285
|
+
|
286
|
+
def self.SchedulingActor; SchedulingActor; end
|
287
|
+
##
|
288
|
+
# An actor that can schedule events.
|
289
|
+
#
|
290
|
+
# Accepts Schedule messages and send Happening events to originator at the
|
291
|
+
# appropriate time.
|
292
|
+
#
|
293
|
+
|
294
|
+
class SchedulingActor < ::DatawireQuarkCore::QuarkObject
|
295
|
+
extend ::DatawireQuarkCore::Static
|
296
|
+
|
297
|
+
static mdk_runtime_SchedulingActor_ref: -> { nil }
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
def initialize()
|
302
|
+
self.__init_fields__
|
303
|
+
|
304
|
+
nil
|
305
|
+
end
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
|
310
|
+
def __init_fields__()
|
311
|
+
|
312
|
+
|
313
|
+
nil
|
314
|
+
end
|
315
|
+
|
316
|
+
|
317
|
+
end
|
318
|
+
SchedulingActor.unlazy_statics
|
319
|
+
|
320
|
+
def self.WebSockets; WebSockets; end
|
321
|
+
##
|
322
|
+
# Service that can open new WebSocket connections.
|
323
|
+
#
|
324
|
+
# When stopped it should close all connections.
|
325
|
+
#
|
326
|
+
|
327
|
+
class WebSockets < ::DatawireQuarkCore::QuarkObject
|
328
|
+
extend ::DatawireQuarkCore::Static
|
329
|
+
|
330
|
+
static mdk_runtime_WebSockets_ref: -> { nil }
|
331
|
+
|
332
|
+
|
333
|
+
|
334
|
+
def initialize()
|
335
|
+
self.__init_fields__
|
336
|
+
|
337
|
+
nil
|
338
|
+
end
|
339
|
+
|
340
|
+
|
341
|
+
|
342
|
+
|
343
|
+
##
|
344
|
+
# The Promise resolves to a WSActor or WSConnectError. The originator will
|
345
|
+
# receive messages.
|
346
|
+
#
|
347
|
+
|
348
|
+
def connect(url, originator)
|
349
|
+
raise NotImplementedError, '`WebSockets.connect` is an abstract method'
|
350
|
+
|
351
|
+
nil
|
352
|
+
end
|
353
|
+
|
354
|
+
def __init_fields__()
|
355
|
+
|
356
|
+
|
357
|
+
nil
|
358
|
+
end
|
359
|
+
|
360
|
+
|
361
|
+
end
|
362
|
+
WebSockets.unlazy_statics
|
363
|
+
|
364
|
+
def self.WSConnectError; WSConnectError; end
|
365
|
+
##
|
366
|
+
# Connection failed.
|
367
|
+
|
368
|
+
class WSConnectError < ::Quark.quark.error.Error
|
369
|
+
extend ::DatawireQuarkCore::Static
|
370
|
+
|
371
|
+
static mdk_runtime_WSConnectError_ref: -> { nil }
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
def initialize(message)
|
376
|
+
|
377
|
+
super(message)
|
378
|
+
|
379
|
+
nil
|
380
|
+
end
|
381
|
+
|
382
|
+
|
383
|
+
|
384
|
+
|
385
|
+
def toString()
|
386
|
+
|
387
|
+
return (("<WSConnectionError: ") + (method(:toString).super_method.call())) + (">")
|
388
|
+
|
389
|
+
nil
|
390
|
+
end
|
391
|
+
|
392
|
+
def _getClass()
|
393
|
+
|
394
|
+
return "mdk_runtime.WSConnectError"
|
395
|
+
|
396
|
+
nil
|
397
|
+
end
|
398
|
+
|
399
|
+
def _getField(name)
|
400
|
+
|
401
|
+
if ((name) == ("message"))
|
402
|
+
return (self).message
|
403
|
+
end
|
404
|
+
return nil
|
405
|
+
|
406
|
+
nil
|
407
|
+
end
|
408
|
+
|
409
|
+
def _setField(name, value)
|
410
|
+
|
411
|
+
if ((name) == ("message"))
|
412
|
+
(self).message = ::DatawireQuarkCore.cast(value) { ::String }
|
413
|
+
end
|
414
|
+
|
415
|
+
nil
|
416
|
+
end
|
417
|
+
|
418
|
+
def __init_fields__()
|
419
|
+
|
420
|
+
super
|
421
|
+
|
422
|
+
nil
|
423
|
+
end
|
424
|
+
|
425
|
+
|
426
|
+
end
|
427
|
+
WSConnectError.unlazy_statics
|
428
|
+
|
429
|
+
def self.WSActor; WSActor; end
|
430
|
+
##
|
431
|
+
# Actor representing a specific WebSocket connection.
|
432
|
+
#
|
433
|
+
# Accepts String and WSClose messages, sends WSMessage and WSClosed
|
434
|
+
# messages to the originator of the connection (Actor passed to
|
435
|
+
# WebSockets.connect()).
|
436
|
+
#
|
437
|
+
|
438
|
+
class WSActor < ::DatawireQuarkCore::QuarkObject
|
439
|
+
extend ::DatawireQuarkCore::Static
|
440
|
+
|
441
|
+
static mdk_runtime_WSActor_ref: -> { nil }
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
def initialize()
|
446
|
+
self.__init_fields__
|
447
|
+
|
448
|
+
nil
|
449
|
+
end
|
450
|
+
|
451
|
+
|
452
|
+
|
453
|
+
|
454
|
+
def __init_fields__()
|
455
|
+
|
456
|
+
|
457
|
+
nil
|
458
|
+
end
|
459
|
+
|
460
|
+
|
461
|
+
end
|
462
|
+
WSActor.unlazy_statics
|
463
|
+
|
464
|
+
def self.WSMessage; WSMessage; end
|
465
|
+
##
|
466
|
+
# A message was received from the server.
|
467
|
+
|
468
|
+
class WSMessage < ::DatawireQuarkCore::QuarkObject
|
469
|
+
attr_accessor :body
|
470
|
+
extend ::DatawireQuarkCore::Static
|
471
|
+
|
472
|
+
static mdk_runtime_WSMessage_ref: -> { nil }
|
473
|
+
|
474
|
+
|
475
|
+
|
476
|
+
def initialize(body)
|
477
|
+
|
478
|
+
self.__init_fields__
|
479
|
+
(self).body = body
|
480
|
+
|
481
|
+
nil
|
482
|
+
end
|
483
|
+
|
484
|
+
|
485
|
+
|
486
|
+
|
487
|
+
def _getClass()
|
488
|
+
|
489
|
+
return "mdk_runtime.WSMessage"
|
490
|
+
|
491
|
+
nil
|
492
|
+
end
|
493
|
+
|
494
|
+
def _getField(name)
|
495
|
+
|
496
|
+
if ((name) == ("body"))
|
497
|
+
return (self).body
|
498
|
+
end
|
499
|
+
return nil
|
500
|
+
|
501
|
+
nil
|
502
|
+
end
|
503
|
+
|
504
|
+
def _setField(name, value)
|
505
|
+
|
506
|
+
if ((name) == ("body"))
|
507
|
+
(self).body = ::DatawireQuarkCore.cast(value) { ::String }
|
508
|
+
end
|
509
|
+
|
510
|
+
nil
|
511
|
+
end
|
512
|
+
|
513
|
+
def __init_fields__()
|
514
|
+
|
515
|
+
self.body = nil
|
516
|
+
|
517
|
+
nil
|
518
|
+
end
|
519
|
+
|
520
|
+
|
521
|
+
end
|
522
|
+
WSMessage.unlazy_statics
|
523
|
+
|
524
|
+
def self.WSClose; WSClose; end
|
525
|
+
##
|
526
|
+
# Tell WSActor to close the connection.
|
527
|
+
|
528
|
+
class WSClose < ::DatawireQuarkCore::QuarkObject
|
529
|
+
extend ::DatawireQuarkCore::Static
|
530
|
+
|
531
|
+
static mdk_runtime_WSClose_ref: -> { nil }
|
532
|
+
|
533
|
+
|
534
|
+
|
535
|
+
def initialize()
|
536
|
+
self.__init_fields__
|
537
|
+
|
538
|
+
nil
|
539
|
+
end
|
540
|
+
|
541
|
+
|
542
|
+
|
543
|
+
|
544
|
+
def _getClass()
|
545
|
+
|
546
|
+
return "mdk_runtime.WSClose"
|
547
|
+
|
548
|
+
nil
|
549
|
+
end
|
550
|
+
|
551
|
+
def _getField(name)
|
552
|
+
|
553
|
+
return nil
|
554
|
+
|
555
|
+
nil
|
556
|
+
end
|
557
|
+
|
558
|
+
def _setField(name, value)
|
559
|
+
|
560
|
+
nil
|
561
|
+
|
562
|
+
nil
|
563
|
+
end
|
564
|
+
|
565
|
+
def __init_fields__()
|
566
|
+
|
567
|
+
|
568
|
+
nil
|
569
|
+
end
|
570
|
+
|
571
|
+
|
572
|
+
end
|
573
|
+
WSClose.unlazy_statics
|
574
|
+
|
575
|
+
def self.WSClosed; WSClosed; end
|
576
|
+
##
|
577
|
+
# Notify of WebSocket connection having closed.
|
578
|
+
|
579
|
+
class WSClosed < ::DatawireQuarkCore::QuarkObject
|
580
|
+
extend ::DatawireQuarkCore::Static
|
581
|
+
|
582
|
+
static mdk_runtime_WSClosed_ref: -> { nil }
|
583
|
+
|
584
|
+
|
585
|
+
|
586
|
+
def initialize()
|
587
|
+
self.__init_fields__
|
588
|
+
|
589
|
+
nil
|
590
|
+
end
|
591
|
+
|
592
|
+
|
593
|
+
|
594
|
+
|
595
|
+
def _getClass()
|
596
|
+
|
597
|
+
return "mdk_runtime.WSClosed"
|
598
|
+
|
599
|
+
nil
|
600
|
+
end
|
601
|
+
|
602
|
+
def _getField(name)
|
603
|
+
|
604
|
+
return nil
|
605
|
+
|
606
|
+
nil
|
607
|
+
end
|
608
|
+
|
609
|
+
def _setField(name, value)
|
610
|
+
|
611
|
+
nil
|
612
|
+
|
613
|
+
nil
|
614
|
+
end
|
615
|
+
|
616
|
+
def __init_fields__()
|
617
|
+
|
618
|
+
|
619
|
+
nil
|
620
|
+
end
|
621
|
+
|
622
|
+
|
623
|
+
end
|
624
|
+
WSClosed.unlazy_statics
|
625
|
+
|
626
|
+
def self.QuarkRuntimeWSActor; QuarkRuntimeWSActor; end
|
627
|
+
##
|
628
|
+
# WSActor that uses current Quark runtime as temporary expedient.
|
629
|
+
#
|
630
|
+
# State can be 'ERROR', 'CONNECTING', 'CONNECTED', 'DISCONNECTING',
|
631
|
+
# 'DISCONNECTED'.
|
632
|
+
#
|
633
|
+
|
634
|
+
class QuarkRuntimeWSActor < ::DatawireQuarkCore::QuarkObject
|
635
|
+
attr_accessor :logger, :socket, :factory, :originator, :dispatcher, :state
|
636
|
+
extend ::DatawireQuarkCore::Static
|
637
|
+
|
638
|
+
static mdk_runtime_QuarkRuntimeWSActor_ref: -> { nil }
|
639
|
+
|
640
|
+
|
641
|
+
|
642
|
+
def initialize(originator, factory)
|
643
|
+
|
644
|
+
self.__init_fields__
|
645
|
+
(self).originator = originator
|
646
|
+
(self).factory = factory
|
647
|
+
|
648
|
+
nil
|
649
|
+
end
|
650
|
+
|
651
|
+
|
652
|
+
|
653
|
+
|
654
|
+
def onStart(dispatcher)
|
655
|
+
|
656
|
+
(self).dispatcher = dispatcher
|
657
|
+
|
658
|
+
nil
|
659
|
+
end
|
660
|
+
|
661
|
+
def onMessage(origin, message)
|
662
|
+
|
663
|
+
if ((((::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id) == ("quark.String")) && (((self).state) == ("CONNECTED")))
|
664
|
+
(self).socket.send(::DatawireQuarkCore.cast(message) { ::String })
|
665
|
+
return
|
666
|
+
end
|
667
|
+
if ((((::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id) == ("mdk_runtime.WSClose")) && (((self).state) == ("CONNECTED")))
|
668
|
+
(self).state = "DISCONNECTING"
|
669
|
+
(self).socket.close()
|
670
|
+
return
|
671
|
+
end
|
672
|
+
|
673
|
+
nil
|
674
|
+
end
|
675
|
+
|
676
|
+
def onWSConnected(socket)
|
677
|
+
|
678
|
+
@logger.debug(((((("onWSConnected, current state ") + ((self).state)) + ("originator: ")) + (((self).originator).to_s)) + (" and I am ")) + ((self).to_s))
|
679
|
+
if (((self).state) == ("ERROR"))
|
680
|
+
@logger.debug("Connection event after error event!")
|
681
|
+
return
|
682
|
+
end
|
683
|
+
(self).state = "CONNECTED"
|
684
|
+
(self).socket = socket
|
685
|
+
(self).factory.resolve(self)
|
686
|
+
|
687
|
+
nil
|
688
|
+
end
|
689
|
+
|
690
|
+
def onWSError(socket, error)
|
691
|
+
|
692
|
+
@logger.debug(((("onWSError, current state ") + ((self).state)) + ("originator: ")) + (((self).originator).to_s))
|
693
|
+
if (((self).state) == ("CONNECTING"))
|
694
|
+
@logger.error(("Error connecting to WebSocket: ") + (error.toString()))
|
695
|
+
(self).state = "ERROR"
|
696
|
+
(self).factory.reject(::Quark.mdk_runtime.WSConnectError.new(error.toString()))
|
697
|
+
return
|
698
|
+
end
|
699
|
+
@logger.error(("WebSocket error: ") + (error.toString()))
|
700
|
+
|
701
|
+
nil
|
702
|
+
end
|
703
|
+
|
704
|
+
def onWSMessage(socket, message)
|
705
|
+
|
706
|
+
@logger.debug(((("onWSMessage, current state: ") + ((self).state)) + ("originator: ")) + (((self).originator).to_s))
|
707
|
+
(self).dispatcher.tell(self, ::Quark.mdk_runtime.WSMessage.new(message), (self).originator)
|
708
|
+
|
709
|
+
nil
|
710
|
+
end
|
711
|
+
|
712
|
+
def onWSFinal(socket)
|
713
|
+
|
714
|
+
@logger.debug(((("onWSFinal, current state ") + ((self).state)) + ("originator: ")) + (((self).originator).to_s))
|
715
|
+
if ((((self).state) == ("DISCONNECTING")) || (((self).state) == ("CONNECTED")))
|
716
|
+
(self).state = "DISCONNECTED"
|
717
|
+
(self).socket = ::DatawireQuarkCore.cast(nil) { ::Quark.quark.WebSocket }
|
718
|
+
(self).dispatcher.tell(self, ::Quark.mdk_runtime.WSClosed.new(), (self).originator)
|
719
|
+
end
|
720
|
+
|
721
|
+
nil
|
722
|
+
end
|
723
|
+
|
724
|
+
def _getClass()
|
725
|
+
|
726
|
+
return "mdk_runtime.QuarkRuntimeWSActor"
|
727
|
+
|
728
|
+
nil
|
729
|
+
end
|
730
|
+
|
731
|
+
def _getField(name)
|
732
|
+
|
733
|
+
if ((name) == ("logger"))
|
734
|
+
return (self).logger
|
735
|
+
end
|
736
|
+
if ((name) == ("socket"))
|
737
|
+
return (self).socket
|
738
|
+
end
|
739
|
+
if ((name) == ("factory"))
|
740
|
+
return (self).factory
|
741
|
+
end
|
742
|
+
if ((name) == ("originator"))
|
743
|
+
return (self).originator
|
744
|
+
end
|
745
|
+
if ((name) == ("dispatcher"))
|
746
|
+
return (self).dispatcher
|
747
|
+
end
|
748
|
+
if ((name) == ("state"))
|
749
|
+
return (self).state
|
750
|
+
end
|
751
|
+
return nil
|
752
|
+
|
753
|
+
nil
|
754
|
+
end
|
755
|
+
|
756
|
+
def _setField(name, value)
|
757
|
+
|
758
|
+
if ((name) == ("logger"))
|
759
|
+
(self).logger = value
|
760
|
+
end
|
761
|
+
if ((name) == ("socket"))
|
762
|
+
(self).socket = ::DatawireQuarkCore.cast(value) { ::Quark.quark.WebSocket }
|
763
|
+
end
|
764
|
+
if ((name) == ("factory"))
|
765
|
+
(self).factory = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.promise.PromiseResolver }
|
766
|
+
end
|
767
|
+
if ((name) == ("originator"))
|
768
|
+
(self).originator = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.Actor }
|
769
|
+
end
|
770
|
+
if ((name) == ("dispatcher"))
|
771
|
+
(self).dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
|
772
|
+
end
|
773
|
+
if ((name) == ("state"))
|
774
|
+
(self).state = ::DatawireQuarkCore.cast(value) { ::String }
|
775
|
+
end
|
776
|
+
|
777
|
+
nil
|
778
|
+
end
|
779
|
+
|
780
|
+
##
|
781
|
+
# The Actor should begin shutting down.
|
782
|
+
|
783
|
+
def onStop()
|
784
|
+
|
785
|
+
nil
|
786
|
+
|
787
|
+
nil
|
788
|
+
end
|
789
|
+
|
790
|
+
##
|
791
|
+
# Called when the WebSocket is first created.
|
792
|
+
|
793
|
+
def onWSInit(socket)
|
794
|
+
|
795
|
+
nil
|
796
|
+
|
797
|
+
nil
|
798
|
+
end
|
799
|
+
|
800
|
+
##
|
801
|
+
# Called when the WebSocket receives a binary message.
|
802
|
+
|
803
|
+
def onWSBinary(socket, message)
|
804
|
+
|
805
|
+
nil
|
806
|
+
|
807
|
+
nil
|
808
|
+
end
|
809
|
+
|
810
|
+
##
|
811
|
+
# Called when the WebSocket disconnects cleanly.
|
812
|
+
|
813
|
+
def onWSClosed(socket)
|
814
|
+
|
815
|
+
nil
|
816
|
+
|
817
|
+
nil
|
818
|
+
end
|
819
|
+
|
820
|
+
def __init_fields__()
|
821
|
+
|
822
|
+
self.logger = ::Quark.quark._getLogger("protocol")
|
823
|
+
self.socket = nil
|
824
|
+
self.factory = nil
|
825
|
+
self.originator = nil
|
826
|
+
self.dispatcher = nil
|
827
|
+
self.state = "CONNECTING"
|
828
|
+
|
829
|
+
nil
|
830
|
+
end
|
831
|
+
|
832
|
+
|
833
|
+
end
|
834
|
+
QuarkRuntimeWSActor.unlazy_statics
|
835
|
+
|
836
|
+
def self.QuarkRuntimeWebSockets; QuarkRuntimeWebSockets; end
|
837
|
+
##
|
838
|
+
# WebSocket that uses current Quark runtime as temporary expedient.
|
839
|
+
#
|
840
|
+
|
841
|
+
class QuarkRuntimeWebSockets < ::DatawireQuarkCore::QuarkObject
|
842
|
+
attr_accessor :logger, :dispatcher, :connections
|
843
|
+
extend ::DatawireQuarkCore::Static
|
844
|
+
|
845
|
+
static quark_List_mdk_runtime_WSActor__ref: -> { nil }
|
846
|
+
static mdk_runtime_QuarkRuntimeWebSockets_ref: -> { nil }
|
847
|
+
|
848
|
+
|
849
|
+
|
850
|
+
def initialize()
|
851
|
+
self.__init_fields__
|
852
|
+
|
853
|
+
nil
|
854
|
+
end
|
855
|
+
|
856
|
+
|
857
|
+
|
858
|
+
|
859
|
+
def connect(url, originator)
|
860
|
+
|
861
|
+
@logger.debug((((originator).to_s) + ("requested connection to ")) + (url))
|
862
|
+
factory = ::Quark.mdk_runtime.promise.PromiseResolver.new((self).dispatcher)
|
863
|
+
actor = ::Quark.mdk_runtime.QuarkRuntimeWSActor.new(originator, factory)
|
864
|
+
(@connections) << (actor)
|
865
|
+
(self).dispatcher.startActor(actor)
|
866
|
+
::Quark.quark.concurrent.Context.runtime().open(url, actor)
|
867
|
+
return (factory).promise
|
868
|
+
|
869
|
+
nil
|
870
|
+
end
|
871
|
+
|
872
|
+
def onStart(dispatcher)
|
873
|
+
|
874
|
+
(self).dispatcher = dispatcher
|
875
|
+
|
876
|
+
nil
|
877
|
+
end
|
878
|
+
|
879
|
+
def onMessage(origin, message)
|
880
|
+
|
881
|
+
nil
|
882
|
+
|
883
|
+
nil
|
884
|
+
end
|
885
|
+
|
886
|
+
def onStop()
|
887
|
+
|
888
|
+
idx = 0
|
889
|
+
while ((idx) < ((@connections).size)) do
|
890
|
+
(self).dispatcher.tell(self, ::Quark.mdk_runtime.WSClose.new(), ((self).connections)[idx])
|
891
|
+
idx = (idx) + (1)
|
892
|
+
end
|
893
|
+
|
894
|
+
nil
|
895
|
+
end
|
896
|
+
|
897
|
+
def _getClass()
|
898
|
+
|
899
|
+
return "mdk_runtime.QuarkRuntimeWebSockets"
|
900
|
+
|
901
|
+
nil
|
902
|
+
end
|
903
|
+
|
904
|
+
def _getField(name)
|
905
|
+
|
906
|
+
if ((name) == ("logger"))
|
907
|
+
return (self).logger
|
908
|
+
end
|
909
|
+
if ((name) == ("dispatcher"))
|
910
|
+
return (self).dispatcher
|
911
|
+
end
|
912
|
+
if ((name) == ("connections"))
|
913
|
+
return (self).connections
|
914
|
+
end
|
915
|
+
return nil
|
916
|
+
|
917
|
+
nil
|
918
|
+
end
|
919
|
+
|
920
|
+
def _setField(name, value)
|
921
|
+
|
922
|
+
if ((name) == ("logger"))
|
923
|
+
(self).logger = value
|
924
|
+
end
|
925
|
+
if ((name) == ("dispatcher"))
|
926
|
+
(self).dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
|
927
|
+
end
|
928
|
+
if ((name) == ("connections"))
|
929
|
+
(self).connections = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List }
|
930
|
+
end
|
931
|
+
|
932
|
+
nil
|
933
|
+
end
|
934
|
+
|
935
|
+
def __init_fields__()
|
936
|
+
|
937
|
+
self.logger = ::Quark.quark._getLogger("protocol")
|
938
|
+
self.dispatcher = nil
|
939
|
+
self.connections = ::DatawireQuarkCore::List.new([])
|
940
|
+
|
941
|
+
nil
|
942
|
+
end
|
943
|
+
|
944
|
+
|
945
|
+
end
|
946
|
+
QuarkRuntimeWebSockets.unlazy_statics
|
947
|
+
|
948
|
+
def self.FakeWSActor; FakeWSActor; end
|
949
|
+
##
|
950
|
+
# WSActor implementation for testing purposes.
|
951
|
+
|
952
|
+
class FakeWSActor < ::DatawireQuarkCore::QuarkObject
|
953
|
+
attr_accessor :url, :resolver, :resolved, :dispatcher, :originator, :sent, :state, :expectIdx
|
954
|
+
extend ::DatawireQuarkCore::Static
|
955
|
+
|
956
|
+
static mdk_runtime_FakeWSActor_ref: -> { nil }
|
957
|
+
|
958
|
+
|
959
|
+
|
960
|
+
def initialize(originator, resolver, url)
|
961
|
+
|
962
|
+
self.__init_fields__
|
963
|
+
(self).url = url
|
964
|
+
(self).originator = originator
|
965
|
+
(self).resolver = resolver
|
966
|
+
|
967
|
+
nil
|
968
|
+
end
|
969
|
+
|
970
|
+
|
971
|
+
|
972
|
+
|
973
|
+
def onStart(dispatcher)
|
974
|
+
|
975
|
+
(self).dispatcher = dispatcher
|
976
|
+
|
977
|
+
nil
|
978
|
+
end
|
979
|
+
|
980
|
+
def onMessage(origin, message)
|
981
|
+
|
982
|
+
if ((((::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id) == ("quark.String")) && (((self).state) == ("CONNECTED")))
|
983
|
+
((self).sent) << (::DatawireQuarkCore.cast(message) { ::String })
|
984
|
+
return
|
985
|
+
end
|
986
|
+
if ((((::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id) == ("mdk_runtime.WSClose")) && (((self).state) == ("CONNECTED")))
|
987
|
+
self.close()
|
988
|
+
return
|
989
|
+
end
|
990
|
+
|
991
|
+
nil
|
992
|
+
end
|
993
|
+
|
994
|
+
##
|
995
|
+
# Simulate the remote peer accepting the socket connect.
|
996
|
+
#
|
997
|
+
|
998
|
+
def accept()
|
999
|
+
|
1000
|
+
if (@resolved)
|
1001
|
+
::Quark.quark.concurrent.Context.runtime().fail("Test bug. already accepted")
|
1002
|
+
else
|
1003
|
+
@resolved = true
|
1004
|
+
(self).state = "CONNECTED"
|
1005
|
+
(self).resolver.resolve(self)
|
1006
|
+
end
|
1007
|
+
|
1008
|
+
nil
|
1009
|
+
end
|
1010
|
+
|
1011
|
+
##
|
1012
|
+
# Simulate the remote peer rejecting the socket connect.
|
1013
|
+
|
1014
|
+
def reject()
|
1015
|
+
|
1016
|
+
if (@resolved)
|
1017
|
+
::Quark.quark.concurrent.Context.runtime().fail("Test bug. already accepted")
|
1018
|
+
else
|
1019
|
+
@resolved = true
|
1020
|
+
(self).resolver.reject(::Quark.mdk_runtime.WSConnectError.new("connection refused"))
|
1021
|
+
end
|
1022
|
+
|
1023
|
+
nil
|
1024
|
+
end
|
1025
|
+
|
1026
|
+
##
|
1027
|
+
# Simulate the remote peer sending a text message to the client.
|
1028
|
+
#
|
1029
|
+
|
1030
|
+
def send(message)
|
1031
|
+
|
1032
|
+
if (((self).state) != ("CONNECTED"))
|
1033
|
+
::Quark.quark.concurrent.Context.runtime().fail("Test bug. Can't send when not connected.")
|
1034
|
+
end
|
1035
|
+
(self).dispatcher.tell(self, ::Quark.mdk_runtime.WSMessage.new(message), @originator)
|
1036
|
+
|
1037
|
+
nil
|
1038
|
+
end
|
1039
|
+
|
1040
|
+
##
|
1041
|
+
# Simulate the remote peer closing the socket.
|
1042
|
+
#
|
1043
|
+
|
1044
|
+
def close()
|
1045
|
+
|
1046
|
+
if (((self).state) == ("CONNECTED"))
|
1047
|
+
(self).state = "DISCONNECTED"
|
1048
|
+
(self).dispatcher.tell(self, ::Quark.mdk_runtime.WSClosed.new(), @originator)
|
1049
|
+
else
|
1050
|
+
::Quark.quark.concurrent.Context.runtime().fail("Test bug. Can't close already closed socket.")
|
1051
|
+
end
|
1052
|
+
|
1053
|
+
nil
|
1054
|
+
end
|
1055
|
+
|
1056
|
+
##
|
1057
|
+
# Check that a message has been sent via this actor.
|
1058
|
+
#
|
1059
|
+
|
1060
|
+
def expectTextMessage()
|
1061
|
+
|
1062
|
+
if (!(@resolved))
|
1063
|
+
::Quark.quark.concurrent.Context.runtime().fail("not connected yet")
|
1064
|
+
return "unreachable"
|
1065
|
+
end
|
1066
|
+
if ((@expectIdx) < (((self).sent).size))
|
1067
|
+
msg = ((self).sent)[@expectIdx]
|
1068
|
+
@expectIdx = (@expectIdx) + (1)
|
1069
|
+
return msg
|
1070
|
+
end
|
1071
|
+
::Quark.quark.concurrent.Context.runtime().fail("no remaining message found")
|
1072
|
+
return "unreachable"
|
1073
|
+
|
1074
|
+
nil
|
1075
|
+
end
|
1076
|
+
|
1077
|
+
def _getClass()
|
1078
|
+
|
1079
|
+
return "mdk_runtime.FakeWSActor"
|
1080
|
+
|
1081
|
+
nil
|
1082
|
+
end
|
1083
|
+
|
1084
|
+
def _getField(name)
|
1085
|
+
|
1086
|
+
if ((name) == ("url"))
|
1087
|
+
return (self).url
|
1088
|
+
end
|
1089
|
+
if ((name) == ("resolver"))
|
1090
|
+
return (self).resolver
|
1091
|
+
end
|
1092
|
+
if ((name) == ("resolved"))
|
1093
|
+
return (self).resolved
|
1094
|
+
end
|
1095
|
+
if ((name) == ("dispatcher"))
|
1096
|
+
return (self).dispatcher
|
1097
|
+
end
|
1098
|
+
if ((name) == ("originator"))
|
1099
|
+
return (self).originator
|
1100
|
+
end
|
1101
|
+
if ((name) == ("sent"))
|
1102
|
+
return (self).sent
|
1103
|
+
end
|
1104
|
+
if ((name) == ("state"))
|
1105
|
+
return (self).state
|
1106
|
+
end
|
1107
|
+
if ((name) == ("expectIdx"))
|
1108
|
+
return (self).expectIdx
|
1109
|
+
end
|
1110
|
+
return nil
|
1111
|
+
|
1112
|
+
nil
|
1113
|
+
end
|
1114
|
+
|
1115
|
+
def _setField(name, value)
|
1116
|
+
|
1117
|
+
if ((name) == ("url"))
|
1118
|
+
(self).url = ::DatawireQuarkCore.cast(value) { ::String }
|
1119
|
+
end
|
1120
|
+
if ((name) == ("resolver"))
|
1121
|
+
(self).resolver = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.promise.PromiseResolver }
|
1122
|
+
end
|
1123
|
+
if ((name) == ("resolved"))
|
1124
|
+
(self).resolved = ::DatawireQuarkCore.cast(value) { ::Object }
|
1125
|
+
end
|
1126
|
+
if ((name) == ("dispatcher"))
|
1127
|
+
(self).dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
|
1128
|
+
end
|
1129
|
+
if ((name) == ("originator"))
|
1130
|
+
(self).originator = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.Actor }
|
1131
|
+
end
|
1132
|
+
if ((name) == ("sent"))
|
1133
|
+
(self).sent = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List }
|
1134
|
+
end
|
1135
|
+
if ((name) == ("state"))
|
1136
|
+
(self).state = ::DatawireQuarkCore.cast(value) { ::String }
|
1137
|
+
end
|
1138
|
+
if ((name) == ("expectIdx"))
|
1139
|
+
(self).expectIdx = ::DatawireQuarkCore.cast(value) { ::Integer }
|
1140
|
+
end
|
1141
|
+
|
1142
|
+
nil
|
1143
|
+
end
|
1144
|
+
|
1145
|
+
##
|
1146
|
+
# The Actor should begin shutting down.
|
1147
|
+
|
1148
|
+
def onStop()
|
1149
|
+
|
1150
|
+
nil
|
1151
|
+
|
1152
|
+
nil
|
1153
|
+
end
|
1154
|
+
|
1155
|
+
def __init_fields__()
|
1156
|
+
|
1157
|
+
self.url = nil
|
1158
|
+
self.resolver = nil
|
1159
|
+
self.resolved = false
|
1160
|
+
self.dispatcher = nil
|
1161
|
+
self.originator = nil
|
1162
|
+
self.sent = ::DatawireQuarkCore::List.new([])
|
1163
|
+
self.state = "CONNECTING"
|
1164
|
+
self.expectIdx = 0
|
1165
|
+
|
1166
|
+
nil
|
1167
|
+
end
|
1168
|
+
|
1169
|
+
|
1170
|
+
end
|
1171
|
+
FakeWSActor.unlazy_statics
|
1172
|
+
|
1173
|
+
def self.FakeWebSockets; FakeWebSockets; end
|
1174
|
+
##
|
1175
|
+
# WebSocket implementation for testing purposes.
|
1176
|
+
#
|
1177
|
+
|
1178
|
+
class FakeWebSockets < ::DatawireQuarkCore::QuarkObject
|
1179
|
+
attr_accessor :dispatcher, :fakeActors
|
1180
|
+
extend ::DatawireQuarkCore::Static
|
1181
|
+
|
1182
|
+
static quark_List_mdk_runtime_FakeWSActor__ref: -> { nil }
|
1183
|
+
static mdk_runtime_FakeWebSockets_ref: -> { nil }
|
1184
|
+
|
1185
|
+
|
1186
|
+
|
1187
|
+
def initialize()
|
1188
|
+
self.__init_fields__
|
1189
|
+
|
1190
|
+
nil
|
1191
|
+
end
|
1192
|
+
|
1193
|
+
|
1194
|
+
|
1195
|
+
|
1196
|
+
def connect(url, originator)
|
1197
|
+
|
1198
|
+
factory = ::Quark.mdk_runtime.promise.PromiseResolver.new((self).dispatcher)
|
1199
|
+
actor = ::Quark.mdk_runtime.FakeWSActor.new(originator, factory, url)
|
1200
|
+
(self).dispatcher.startActor(actor)
|
1201
|
+
((self).fakeActors) << (actor)
|
1202
|
+
return (factory).promise
|
1203
|
+
|
1204
|
+
nil
|
1205
|
+
end
|
1206
|
+
|
1207
|
+
def lastConnection()
|
1208
|
+
|
1209
|
+
return ((self).fakeActors)[(((self).fakeActors).size) - (1)]
|
1210
|
+
|
1211
|
+
nil
|
1212
|
+
end
|
1213
|
+
|
1214
|
+
def onStart(dispatcher)
|
1215
|
+
|
1216
|
+
(self).dispatcher = dispatcher
|
1217
|
+
|
1218
|
+
nil
|
1219
|
+
end
|
1220
|
+
|
1221
|
+
def onMessage(origin, message)
|
1222
|
+
|
1223
|
+
nil
|
1224
|
+
|
1225
|
+
nil
|
1226
|
+
end
|
1227
|
+
|
1228
|
+
def _getClass()
|
1229
|
+
|
1230
|
+
return "mdk_runtime.FakeWebSockets"
|
1231
|
+
|
1232
|
+
nil
|
1233
|
+
end
|
1234
|
+
|
1235
|
+
def _getField(name)
|
1236
|
+
|
1237
|
+
if ((name) == ("dispatcher"))
|
1238
|
+
return (self).dispatcher
|
1239
|
+
end
|
1240
|
+
if ((name) == ("fakeActors"))
|
1241
|
+
return (self).fakeActors
|
1242
|
+
end
|
1243
|
+
return nil
|
1244
|
+
|
1245
|
+
nil
|
1246
|
+
end
|
1247
|
+
|
1248
|
+
def _setField(name, value)
|
1249
|
+
|
1250
|
+
if ((name) == ("dispatcher"))
|
1251
|
+
(self).dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
|
1252
|
+
end
|
1253
|
+
if ((name) == ("fakeActors"))
|
1254
|
+
(self).fakeActors = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List }
|
1255
|
+
end
|
1256
|
+
|
1257
|
+
nil
|
1258
|
+
end
|
1259
|
+
|
1260
|
+
##
|
1261
|
+
# The Actor should begin shutting down.
|
1262
|
+
|
1263
|
+
def onStop()
|
1264
|
+
|
1265
|
+
nil
|
1266
|
+
|
1267
|
+
nil
|
1268
|
+
end
|
1269
|
+
|
1270
|
+
def __init_fields__()
|
1271
|
+
|
1272
|
+
self.dispatcher = nil
|
1273
|
+
self.fakeActors = ::DatawireQuarkCore::List.new([])
|
1274
|
+
|
1275
|
+
nil
|
1276
|
+
end
|
1277
|
+
|
1278
|
+
|
1279
|
+
end
|
1280
|
+
FakeWebSockets.unlazy_statics
|
1281
|
+
|
1282
|
+
def self.Schedule; Schedule; end
|
1283
|
+
##
|
1284
|
+
# Please send me a Happening message with given event name in given number of
|
1285
|
+
# seconds.
|
1286
|
+
#
|
1287
|
+
|
1288
|
+
class Schedule < ::DatawireQuarkCore::QuarkObject
|
1289
|
+
attr_accessor :event, :seconds
|
1290
|
+
extend ::DatawireQuarkCore::Static
|
1291
|
+
|
1292
|
+
static mdk_runtime_Schedule_ref: -> { nil }
|
1293
|
+
|
1294
|
+
|
1295
|
+
|
1296
|
+
def initialize(event, seconds)
|
1297
|
+
|
1298
|
+
self.__init_fields__
|
1299
|
+
(self).event = event
|
1300
|
+
(self).seconds = seconds
|
1301
|
+
|
1302
|
+
nil
|
1303
|
+
end
|
1304
|
+
|
1305
|
+
|
1306
|
+
|
1307
|
+
|
1308
|
+
def _getClass()
|
1309
|
+
|
1310
|
+
return "mdk_runtime.Schedule"
|
1311
|
+
|
1312
|
+
nil
|
1313
|
+
end
|
1314
|
+
|
1315
|
+
def _getField(name)
|
1316
|
+
|
1317
|
+
if ((name) == ("event"))
|
1318
|
+
return (self).event
|
1319
|
+
end
|
1320
|
+
if ((name) == ("seconds"))
|
1321
|
+
return (self).seconds
|
1322
|
+
end
|
1323
|
+
return nil
|
1324
|
+
|
1325
|
+
nil
|
1326
|
+
end
|
1327
|
+
|
1328
|
+
def _setField(name, value)
|
1329
|
+
|
1330
|
+
if ((name) == ("event"))
|
1331
|
+
(self).event = ::DatawireQuarkCore.cast(value) { ::String }
|
1332
|
+
end
|
1333
|
+
if ((name) == ("seconds"))
|
1334
|
+
(self).seconds = ::DatawireQuarkCore.cast(value) { ::Float }
|
1335
|
+
end
|
1336
|
+
|
1337
|
+
nil
|
1338
|
+
end
|
1339
|
+
|
1340
|
+
def __init_fields__()
|
1341
|
+
|
1342
|
+
self.event = nil
|
1343
|
+
self.seconds = nil
|
1344
|
+
|
1345
|
+
nil
|
1346
|
+
end
|
1347
|
+
|
1348
|
+
|
1349
|
+
end
|
1350
|
+
Schedule.unlazy_statics
|
1351
|
+
|
1352
|
+
def self.Happening; Happening; end
|
1353
|
+
##
|
1354
|
+
# A scheduled event is now happening.
|
1355
|
+
|
1356
|
+
class Happening < ::DatawireQuarkCore::QuarkObject
|
1357
|
+
attr_accessor :event, :currentTime
|
1358
|
+
extend ::DatawireQuarkCore::Static
|
1359
|
+
|
1360
|
+
static mdk_runtime_Happening_ref: -> { nil }
|
1361
|
+
|
1362
|
+
|
1363
|
+
|
1364
|
+
def initialize(event, currentTime)
|
1365
|
+
|
1366
|
+
self.__init_fields__
|
1367
|
+
(self).event = event
|
1368
|
+
(self).currentTime = currentTime
|
1369
|
+
|
1370
|
+
nil
|
1371
|
+
end
|
1372
|
+
|
1373
|
+
|
1374
|
+
|
1375
|
+
|
1376
|
+
def _getClass()
|
1377
|
+
|
1378
|
+
return "mdk_runtime.Happening"
|
1379
|
+
|
1380
|
+
nil
|
1381
|
+
end
|
1382
|
+
|
1383
|
+
def _getField(name)
|
1384
|
+
|
1385
|
+
if ((name) == ("event"))
|
1386
|
+
return (self).event
|
1387
|
+
end
|
1388
|
+
if ((name) == ("currentTime"))
|
1389
|
+
return (self).currentTime
|
1390
|
+
end
|
1391
|
+
return nil
|
1392
|
+
|
1393
|
+
nil
|
1394
|
+
end
|
1395
|
+
|
1396
|
+
def _setField(name, value)
|
1397
|
+
|
1398
|
+
if ((name) == ("event"))
|
1399
|
+
(self).event = ::DatawireQuarkCore.cast(value) { ::String }
|
1400
|
+
end
|
1401
|
+
if ((name) == ("currentTime"))
|
1402
|
+
(self).currentTime = ::DatawireQuarkCore.cast(value) { ::Float }
|
1403
|
+
end
|
1404
|
+
|
1405
|
+
nil
|
1406
|
+
end
|
1407
|
+
|
1408
|
+
def __init_fields__()
|
1409
|
+
|
1410
|
+
self.event = nil
|
1411
|
+
self.currentTime = nil
|
1412
|
+
|
1413
|
+
nil
|
1414
|
+
end
|
1415
|
+
|
1416
|
+
|
1417
|
+
end
|
1418
|
+
Happening.unlazy_statics
|
1419
|
+
|
1420
|
+
def self._ScheduleTask; ScheduleTask; end
|
1421
|
+
class ScheduleTask < ::DatawireQuarkCore::QuarkObject
|
1422
|
+
attr_accessor :timeService, :requester, :event
|
1423
|
+
extend ::DatawireQuarkCore::Static
|
1424
|
+
|
1425
|
+
static mdk_runtime__ScheduleTask_ref: -> { nil }
|
1426
|
+
|
1427
|
+
|
1428
|
+
|
1429
|
+
def initialize(timeService, requester, event)
|
1430
|
+
|
1431
|
+
self.__init_fields__
|
1432
|
+
(self).timeService = timeService
|
1433
|
+
(self).requester = requester
|
1434
|
+
(self).event = event
|
1435
|
+
|
1436
|
+
nil
|
1437
|
+
end
|
1438
|
+
|
1439
|
+
|
1440
|
+
|
1441
|
+
|
1442
|
+
def onExecute(runtime)
|
1443
|
+
|
1444
|
+
(@timeService).dispatcher.tell((self).timeService, ::Quark.mdk_runtime.Happening.new((self).event, (self).timeService.time()), (self).requester)
|
1445
|
+
|
1446
|
+
nil
|
1447
|
+
end
|
1448
|
+
|
1449
|
+
def _getClass()
|
1450
|
+
|
1451
|
+
return "mdk_runtime._ScheduleTask"
|
1452
|
+
|
1453
|
+
nil
|
1454
|
+
end
|
1455
|
+
|
1456
|
+
def _getField(name)
|
1457
|
+
|
1458
|
+
if ((name) == ("timeService"))
|
1459
|
+
return (self).timeService
|
1460
|
+
end
|
1461
|
+
if ((name) == ("requester"))
|
1462
|
+
return (self).requester
|
1463
|
+
end
|
1464
|
+
if ((name) == ("event"))
|
1465
|
+
return (self).event
|
1466
|
+
end
|
1467
|
+
return nil
|
1468
|
+
|
1469
|
+
nil
|
1470
|
+
end
|
1471
|
+
|
1472
|
+
def _setField(name, value)
|
1473
|
+
|
1474
|
+
if ((name) == ("timeService"))
|
1475
|
+
(self).timeService = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.QuarkRuntimeTime }
|
1476
|
+
end
|
1477
|
+
if ((name) == ("requester"))
|
1478
|
+
(self).requester = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.Actor }
|
1479
|
+
end
|
1480
|
+
if ((name) == ("event"))
|
1481
|
+
(self).event = ::DatawireQuarkCore.cast(value) { ::String }
|
1482
|
+
end
|
1483
|
+
|
1484
|
+
nil
|
1485
|
+
end
|
1486
|
+
|
1487
|
+
def __init_fields__()
|
1488
|
+
|
1489
|
+
self.timeService = nil
|
1490
|
+
self.requester = nil
|
1491
|
+
self.event = nil
|
1492
|
+
|
1493
|
+
nil
|
1494
|
+
end
|
1495
|
+
|
1496
|
+
|
1497
|
+
end
|
1498
|
+
ScheduleTask.unlazy_statics
|
1499
|
+
|
1500
|
+
def self.QuarkRuntimeTime; QuarkRuntimeTime; end
|
1501
|
+
##
|
1502
|
+
# Temporary implementation based on Quark runtime, until we have native
|
1503
|
+
# implementation.
|
1504
|
+
#
|
1505
|
+
|
1506
|
+
class QuarkRuntimeTime < ::DatawireQuarkCore::QuarkObject
|
1507
|
+
attr_accessor :dispatcher, :stopped
|
1508
|
+
extend ::DatawireQuarkCore::Static
|
1509
|
+
|
1510
|
+
static mdk_runtime_QuarkRuntimeTime_ref: -> { nil }
|
1511
|
+
|
1512
|
+
|
1513
|
+
|
1514
|
+
def initialize()
|
1515
|
+
self.__init_fields__
|
1516
|
+
|
1517
|
+
nil
|
1518
|
+
end
|
1519
|
+
|
1520
|
+
|
1521
|
+
|
1522
|
+
|
1523
|
+
def onStart(dispatcher)
|
1524
|
+
|
1525
|
+
(self).dispatcher = dispatcher
|
1526
|
+
|
1527
|
+
nil
|
1528
|
+
end
|
1529
|
+
|
1530
|
+
def onStop()
|
1531
|
+
|
1532
|
+
(self).stopped = true
|
1533
|
+
|
1534
|
+
nil
|
1535
|
+
end
|
1536
|
+
|
1537
|
+
def onMessage(origin, msg)
|
1538
|
+
|
1539
|
+
if ((self).stopped)
|
1540
|
+
return
|
1541
|
+
end
|
1542
|
+
sched = ::DatawireQuarkCore.cast(msg) { ::Quark.mdk_runtime.Schedule }
|
1543
|
+
seconds = (sched).seconds
|
1544
|
+
if ((seconds) == (0.0))
|
1545
|
+
seconds = 0.001
|
1546
|
+
end
|
1547
|
+
::Quark.quark.concurrent.Context.runtime().schedule(::Quark.mdk_runtime._ScheduleTask.new(self, origin, (sched).event), seconds)
|
1548
|
+
|
1549
|
+
nil
|
1550
|
+
end
|
1551
|
+
|
1552
|
+
def time()
|
1553
|
+
|
1554
|
+
milliseconds = (::Quark.quark.concurrent.Context.runtime().now()).to_f
|
1555
|
+
return (milliseconds) / (1000.0)
|
1556
|
+
|
1557
|
+
nil
|
1558
|
+
end
|
1559
|
+
|
1560
|
+
def _getClass()
|
1561
|
+
|
1562
|
+
return "mdk_runtime.QuarkRuntimeTime"
|
1563
|
+
|
1564
|
+
nil
|
1565
|
+
end
|
1566
|
+
|
1567
|
+
def _getField(name)
|
1568
|
+
|
1569
|
+
if ((name) == ("dispatcher"))
|
1570
|
+
return (self).dispatcher
|
1571
|
+
end
|
1572
|
+
if ((name) == ("stopped"))
|
1573
|
+
return (self).stopped
|
1574
|
+
end
|
1575
|
+
return nil
|
1576
|
+
|
1577
|
+
nil
|
1578
|
+
end
|
1579
|
+
|
1580
|
+
def _setField(name, value)
|
1581
|
+
|
1582
|
+
if ((name) == ("dispatcher"))
|
1583
|
+
(self).dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
|
1584
|
+
end
|
1585
|
+
if ((name) == ("stopped"))
|
1586
|
+
(self).stopped = ::DatawireQuarkCore.cast(value) { ::Object }
|
1587
|
+
end
|
1588
|
+
|
1589
|
+
nil
|
1590
|
+
end
|
1591
|
+
|
1592
|
+
def __init_fields__()
|
1593
|
+
|
1594
|
+
self.dispatcher = nil
|
1595
|
+
self.stopped = false
|
1596
|
+
|
1597
|
+
nil
|
1598
|
+
end
|
1599
|
+
|
1600
|
+
|
1601
|
+
end
|
1602
|
+
QuarkRuntimeTime.unlazy_statics
|
1603
|
+
|
1604
|
+
def self._FakeTimeRequest; FakeTimeRequest; end
|
1605
|
+
class FakeTimeRequest < ::DatawireQuarkCore::QuarkObject
|
1606
|
+
attr_accessor :requester, :event, :happensAt
|
1607
|
+
extend ::DatawireQuarkCore::Static
|
1608
|
+
|
1609
|
+
static mdk_runtime__FakeTimeRequest_ref: -> { nil }
|
1610
|
+
|
1611
|
+
|
1612
|
+
|
1613
|
+
def initialize(requester, event, happensAt)
|
1614
|
+
|
1615
|
+
self.__init_fields__
|
1616
|
+
(self).requester = requester
|
1617
|
+
(self).event = event
|
1618
|
+
(self).happensAt = happensAt
|
1619
|
+
|
1620
|
+
nil
|
1621
|
+
end
|
1622
|
+
|
1623
|
+
|
1624
|
+
|
1625
|
+
|
1626
|
+
def _getClass()
|
1627
|
+
|
1628
|
+
return "mdk_runtime._FakeTimeRequest"
|
1629
|
+
|
1630
|
+
nil
|
1631
|
+
end
|
1632
|
+
|
1633
|
+
def _getField(name)
|
1634
|
+
|
1635
|
+
if ((name) == ("requester"))
|
1636
|
+
return (self).requester
|
1637
|
+
end
|
1638
|
+
if ((name) == ("event"))
|
1639
|
+
return (self).event
|
1640
|
+
end
|
1641
|
+
if ((name) == ("happensAt"))
|
1642
|
+
return (self).happensAt
|
1643
|
+
end
|
1644
|
+
return nil
|
1645
|
+
|
1646
|
+
nil
|
1647
|
+
end
|
1648
|
+
|
1649
|
+
def _setField(name, value)
|
1650
|
+
|
1651
|
+
if ((name) == ("requester"))
|
1652
|
+
(self).requester = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.Actor }
|
1653
|
+
end
|
1654
|
+
if ((name) == ("event"))
|
1655
|
+
(self).event = ::DatawireQuarkCore.cast(value) { ::String }
|
1656
|
+
end
|
1657
|
+
if ((name) == ("happensAt"))
|
1658
|
+
(self).happensAt = ::DatawireQuarkCore.cast(value) { ::Float }
|
1659
|
+
end
|
1660
|
+
|
1661
|
+
nil
|
1662
|
+
end
|
1663
|
+
|
1664
|
+
def __init_fields__()
|
1665
|
+
|
1666
|
+
self.requester = nil
|
1667
|
+
self.event = nil
|
1668
|
+
self.happensAt = nil
|
1669
|
+
|
1670
|
+
nil
|
1671
|
+
end
|
1672
|
+
|
1673
|
+
|
1674
|
+
end
|
1675
|
+
FakeTimeRequest.unlazy_statics
|
1676
|
+
|
1677
|
+
def self.FakeTime; FakeTime; end
|
1678
|
+
##
|
1679
|
+
# Testing fake.
|
1680
|
+
|
1681
|
+
class FakeTime < ::DatawireQuarkCore::QuarkObject
|
1682
|
+
attr_accessor :_now, :_scheduled, :dispatcher
|
1683
|
+
extend ::DatawireQuarkCore::Static
|
1684
|
+
|
1685
|
+
static quark_List_quark_long__ref: -> { nil }
|
1686
|
+
static quark_Map_quark_long_mdk_runtime__FakeTimeRequest__ref: -> { nil }
|
1687
|
+
static mdk_runtime_FakeTime_ref: -> { nil }
|
1688
|
+
|
1689
|
+
|
1690
|
+
|
1691
|
+
def initialize()
|
1692
|
+
self.__init_fields__
|
1693
|
+
|
1694
|
+
nil
|
1695
|
+
end
|
1696
|
+
|
1697
|
+
|
1698
|
+
|
1699
|
+
|
1700
|
+
def onStart(dispatcher)
|
1701
|
+
|
1702
|
+
(self).dispatcher = dispatcher
|
1703
|
+
|
1704
|
+
nil
|
1705
|
+
end
|
1706
|
+
|
1707
|
+
def onMessage(origin, msg)
|
1708
|
+
|
1709
|
+
sched = ::DatawireQuarkCore.cast(msg) { ::Quark.mdk_runtime.Schedule }
|
1710
|
+
(@_scheduled)[((::DatawireQuarkCore::List.new((@_scheduled).keys)).size)] = (::Quark.mdk_runtime._FakeTimeRequest.new(origin, (sched).event, ((self)._now) + ((sched).seconds)))
|
1711
|
+
|
1712
|
+
nil
|
1713
|
+
end
|
1714
|
+
|
1715
|
+
def time()
|
1716
|
+
|
1717
|
+
return (self)._now
|
1718
|
+
|
1719
|
+
nil
|
1720
|
+
end
|
1721
|
+
|
1722
|
+
##
|
1723
|
+
# Run scheduled events whose time has come.
|
1724
|
+
|
1725
|
+
def pump()
|
1726
|
+
|
1727
|
+
idx = 0
|
1728
|
+
keys = ::DatawireQuarkCore::List.new(((self)._scheduled).keys)
|
1729
|
+
while ((idx) < ((keys).size)) do
|
1730
|
+
request = (@_scheduled)[(keys)[idx]]
|
1731
|
+
if (((request).happensAt) <= ((self)._now))
|
1732
|
+
((self)._scheduled).delete((keys)[idx])
|
1733
|
+
(self).dispatcher.tell(self, ::Quark.mdk_runtime.Happening.new((request).event, self.time()), (request).requester)
|
1734
|
+
end
|
1735
|
+
idx = (idx) + (1)
|
1736
|
+
end
|
1737
|
+
|
1738
|
+
nil
|
1739
|
+
end
|
1740
|
+
|
1741
|
+
##
|
1742
|
+
# Move time forward.
|
1743
|
+
|
1744
|
+
def advance(seconds)
|
1745
|
+
|
1746
|
+
(self)._now = ((self)._now) + (seconds)
|
1747
|
+
|
1748
|
+
nil
|
1749
|
+
end
|
1750
|
+
|
1751
|
+
##
|
1752
|
+
# Number of scheduled events.
|
1753
|
+
|
1754
|
+
def scheduled()
|
1755
|
+
|
1756
|
+
return (::DatawireQuarkCore::List.new(((self)._scheduled).keys)).size
|
1757
|
+
|
1758
|
+
nil
|
1759
|
+
end
|
1760
|
+
|
1761
|
+
def _getClass()
|
1762
|
+
|
1763
|
+
return "mdk_runtime.FakeTime"
|
1764
|
+
|
1765
|
+
nil
|
1766
|
+
end
|
1767
|
+
|
1768
|
+
def _getField(name)
|
1769
|
+
|
1770
|
+
if ((name) == ("_now"))
|
1771
|
+
return (self)._now
|
1772
|
+
end
|
1773
|
+
if ((name) == ("_scheduled"))
|
1774
|
+
return (self)._scheduled
|
1775
|
+
end
|
1776
|
+
if ((name) == ("dispatcher"))
|
1777
|
+
return (self).dispatcher
|
1778
|
+
end
|
1779
|
+
return nil
|
1780
|
+
|
1781
|
+
nil
|
1782
|
+
end
|
1783
|
+
|
1784
|
+
def _setField(name, value)
|
1785
|
+
|
1786
|
+
if ((name) == ("_now"))
|
1787
|
+
(self)._now = ::DatawireQuarkCore.cast(value) { ::Float }
|
1788
|
+
end
|
1789
|
+
if ((name) == ("_scheduled"))
|
1790
|
+
(self)._scheduled = ::DatawireQuarkCore.cast(value) { ::Hash }
|
1791
|
+
end
|
1792
|
+
if ((name) == ("dispatcher"))
|
1793
|
+
(self).dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
|
1794
|
+
end
|
1795
|
+
|
1796
|
+
nil
|
1797
|
+
end
|
1798
|
+
|
1799
|
+
##
|
1800
|
+
# The Actor should begin shutting down.
|
1801
|
+
|
1802
|
+
def onStop()
|
1803
|
+
|
1804
|
+
nil
|
1805
|
+
|
1806
|
+
nil
|
1807
|
+
end
|
1808
|
+
|
1809
|
+
def __init_fields__()
|
1810
|
+
|
1811
|
+
self._now = 1000.0
|
1812
|
+
self._scheduled = {}
|
1813
|
+
self.dispatcher = nil
|
1814
|
+
|
1815
|
+
nil
|
1816
|
+
end
|
1817
|
+
|
1818
|
+
|
1819
|
+
end
|
1820
|
+
FakeTime.unlazy_statics
|
1821
|
+
|
1822
|
+
def self.EnvironmentVariable; EnvironmentVariable; end
|
1823
|
+
##
|
1824
|
+
# EnvironmentVariable is a Supplier of Strings that come from the environment.
|
1825
|
+
|
1826
|
+
class EnvironmentVariable < ::DatawireQuarkCore::QuarkObject
|
1827
|
+
attr_accessor :variableName, :_value
|
1828
|
+
extend ::DatawireQuarkCore::Static
|
1829
|
+
|
1830
|
+
static mdk_runtime_EnvironmentVariable_ref: -> { nil }
|
1831
|
+
|
1832
|
+
|
1833
|
+
|
1834
|
+
def initialize(variableName, value)
|
1835
|
+
|
1836
|
+
self.__init_fields__
|
1837
|
+
(self).variableName = variableName
|
1838
|
+
(self)._value = value
|
1839
|
+
|
1840
|
+
nil
|
1841
|
+
end
|
1842
|
+
|
1843
|
+
|
1844
|
+
|
1845
|
+
|
1846
|
+
def isDefined()
|
1847
|
+
|
1848
|
+
return (self.get()) != (nil)
|
1849
|
+
|
1850
|
+
nil
|
1851
|
+
end
|
1852
|
+
|
1853
|
+
def get()
|
1854
|
+
|
1855
|
+
return (self)._value
|
1856
|
+
|
1857
|
+
nil
|
1858
|
+
end
|
1859
|
+
|
1860
|
+
def orElseGet(alternative)
|
1861
|
+
|
1862
|
+
result = self.get()
|
1863
|
+
if ((result) != (nil))
|
1864
|
+
return result
|
1865
|
+
else
|
1866
|
+
return alternative
|
1867
|
+
end
|
1868
|
+
|
1869
|
+
nil
|
1870
|
+
end
|
1871
|
+
|
1872
|
+
def _getClass()
|
1873
|
+
|
1874
|
+
return "mdk_runtime.EnvironmentVariable"
|
1875
|
+
|
1876
|
+
nil
|
1877
|
+
end
|
1878
|
+
|
1879
|
+
def _getField(name)
|
1880
|
+
|
1881
|
+
if ((name) == ("variableName"))
|
1882
|
+
return (self).variableName
|
1883
|
+
end
|
1884
|
+
if ((name) == ("_value"))
|
1885
|
+
return (self)._value
|
1886
|
+
end
|
1887
|
+
return nil
|
1888
|
+
|
1889
|
+
nil
|
1890
|
+
end
|
1891
|
+
|
1892
|
+
def _setField(name, value)
|
1893
|
+
|
1894
|
+
if ((name) == ("variableName"))
|
1895
|
+
(self).variableName = ::DatawireQuarkCore.cast(value) { ::String }
|
1896
|
+
end
|
1897
|
+
if ((name) == ("_value"))
|
1898
|
+
(self)._value = ::DatawireQuarkCore.cast(value) { ::String }
|
1899
|
+
end
|
1900
|
+
|
1901
|
+
nil
|
1902
|
+
end
|
1903
|
+
|
1904
|
+
def __init_fields__()
|
1905
|
+
|
1906
|
+
self.variableName = nil
|
1907
|
+
self._value = nil
|
1908
|
+
|
1909
|
+
nil
|
1910
|
+
end
|
1911
|
+
|
1912
|
+
|
1913
|
+
end
|
1914
|
+
EnvironmentVariable.unlazy_statics
|
1915
|
+
|
1916
|
+
def self.EnvironmentVariables; EnvironmentVariables; end
|
1917
|
+
##
|
1918
|
+
# Inspect process environment variables.
|
1919
|
+
|
1920
|
+
class EnvironmentVariables < ::DatawireQuarkCore::QuarkObject
|
1921
|
+
extend ::DatawireQuarkCore::Static
|
1922
|
+
|
1923
|
+
static mdk_runtime_EnvironmentVariables_ref: -> { nil }
|
1924
|
+
|
1925
|
+
|
1926
|
+
|
1927
|
+
def initialize()
|
1928
|
+
self.__init_fields__
|
1929
|
+
|
1930
|
+
nil
|
1931
|
+
end
|
1932
|
+
|
1933
|
+
|
1934
|
+
|
1935
|
+
|
1936
|
+
##
|
1937
|
+
# Return an EnvironmentVariable instance for the given var.
|
1938
|
+
|
1939
|
+
def var(name)
|
1940
|
+
raise NotImplementedError, '`EnvironmentVariables.var` is an abstract method'
|
1941
|
+
|
1942
|
+
nil
|
1943
|
+
end
|
1944
|
+
|
1945
|
+
def __init_fields__()
|
1946
|
+
|
1947
|
+
|
1948
|
+
nil
|
1949
|
+
end
|
1950
|
+
|
1951
|
+
|
1952
|
+
end
|
1953
|
+
EnvironmentVariables.unlazy_statics
|
1954
|
+
|
1955
|
+
def self.RealEnvVars; RealEnvVars; end
|
1956
|
+
##
|
1957
|
+
# Use real environment variables.
|
1958
|
+
|
1959
|
+
class RealEnvVars < ::DatawireQuarkCore::QuarkObject
|
1960
|
+
extend ::DatawireQuarkCore::Static
|
1961
|
+
|
1962
|
+
static mdk_runtime_RealEnvVars_ref: -> { nil }
|
1963
|
+
|
1964
|
+
|
1965
|
+
|
1966
|
+
def initialize()
|
1967
|
+
self.__init_fields__
|
1968
|
+
|
1969
|
+
nil
|
1970
|
+
end
|
1971
|
+
|
1972
|
+
|
1973
|
+
|
1974
|
+
|
1975
|
+
def var(name)
|
1976
|
+
|
1977
|
+
return ::Quark.mdk_runtime.EnvironmentVariable.new(name, ::Quark.quark.os.Environment.getEnvironment().__get__(name))
|
1978
|
+
|
1979
|
+
nil
|
1980
|
+
end
|
1981
|
+
|
1982
|
+
def _getClass()
|
1983
|
+
|
1984
|
+
return "mdk_runtime.RealEnvVars"
|
1985
|
+
|
1986
|
+
nil
|
1987
|
+
end
|
1988
|
+
|
1989
|
+
def _getField(name)
|
1990
|
+
|
1991
|
+
return nil
|
1992
|
+
|
1993
|
+
nil
|
1994
|
+
end
|
1995
|
+
|
1996
|
+
def _setField(name, value)
|
1997
|
+
|
1998
|
+
nil
|
1999
|
+
|
2000
|
+
nil
|
2001
|
+
end
|
2002
|
+
|
2003
|
+
def __init_fields__()
|
2004
|
+
|
2005
|
+
|
2006
|
+
nil
|
2007
|
+
end
|
2008
|
+
|
2009
|
+
|
2010
|
+
end
|
2011
|
+
RealEnvVars.unlazy_statics
|
2012
|
+
|
2013
|
+
def self.FakeEnvVars; FakeEnvVars; end
|
2014
|
+
##
|
2015
|
+
# Testing fake for EnvironmentVariables.
|
2016
|
+
|
2017
|
+
class FakeEnvVars < ::DatawireQuarkCore::QuarkObject
|
2018
|
+
attr_accessor :env
|
2019
|
+
extend ::DatawireQuarkCore::Static
|
2020
|
+
|
2021
|
+
static mdk_runtime_FakeEnvVars_ref: -> { nil }
|
2022
|
+
|
2023
|
+
|
2024
|
+
|
2025
|
+
def initialize()
|
2026
|
+
self.__init_fields__
|
2027
|
+
|
2028
|
+
nil
|
2029
|
+
end
|
2030
|
+
|
2031
|
+
|
2032
|
+
|
2033
|
+
|
2034
|
+
def set(name, value)
|
2035
|
+
|
2036
|
+
((self).env)[name] = (value)
|
2037
|
+
|
2038
|
+
nil
|
2039
|
+
end
|
2040
|
+
|
2041
|
+
def var(name)
|
2042
|
+
|
2043
|
+
value = ::DatawireQuarkCore.cast(nil) { ::String }
|
2044
|
+
if (((self).env).key?(name))
|
2045
|
+
value = ((self).env)[name]
|
2046
|
+
end
|
2047
|
+
return ::Quark.mdk_runtime.EnvironmentVariable.new(name, value)
|
2048
|
+
|
2049
|
+
nil
|
2050
|
+
end
|
2051
|
+
|
2052
|
+
def _getClass()
|
2053
|
+
|
2054
|
+
return "mdk_runtime.FakeEnvVars"
|
2055
|
+
|
2056
|
+
nil
|
2057
|
+
end
|
2058
|
+
|
2059
|
+
def _getField(name)
|
2060
|
+
|
2061
|
+
if ((name) == ("env"))
|
2062
|
+
return (self).env
|
2063
|
+
end
|
2064
|
+
return nil
|
2065
|
+
|
2066
|
+
nil
|
2067
|
+
end
|
2068
|
+
|
2069
|
+
def _setField(name, value)
|
2070
|
+
|
2071
|
+
if ((name) == ("env"))
|
2072
|
+
(self).env = ::DatawireQuarkCore.cast(value) { ::Hash }
|
2073
|
+
end
|
2074
|
+
|
2075
|
+
nil
|
2076
|
+
end
|
2077
|
+
|
2078
|
+
def __init_fields__()
|
2079
|
+
|
2080
|
+
self.env = {}
|
2081
|
+
|
2082
|
+
nil
|
2083
|
+
end
|
2084
|
+
|
2085
|
+
|
2086
|
+
end
|
2087
|
+
FakeEnvVars.unlazy_statics
|
2088
|
+
|
2089
|
+
##
|
2090
|
+
# Create a MDKRuntime with the default configuration and start its actors.
|
2091
|
+
|
2092
|
+
def self.defaultRuntime()
|
2093
|
+
|
2094
|
+
runtime = ::Quark.mdk_runtime.MDKRuntime.new()
|
2095
|
+
(runtime).dependencies.registerService("envvar", ::Quark.mdk_runtime.RealEnvVars.new())
|
2096
|
+
timeService = ::Quark.mdk_runtime.QuarkRuntimeTime.new()
|
2097
|
+
websockets = ::Quark.mdk_runtime.QuarkRuntimeWebSockets.new()
|
2098
|
+
(runtime).dependencies.registerService("time", timeService)
|
2099
|
+
(runtime).dependencies.registerService("schedule", timeService)
|
2100
|
+
(runtime).dependencies.registerService("websockets", websockets)
|
2101
|
+
fileActor = ::Quark.mdk_runtime.files.FileActorImpl.new(runtime)
|
2102
|
+
(runtime).dependencies.registerService("files", fileActor)
|
2103
|
+
(runtime).dispatcher.startActor(timeService)
|
2104
|
+
(runtime).dispatcher.startActor(websockets)
|
2105
|
+
(runtime).dispatcher.startActor(fileActor)
|
2106
|
+
return runtime
|
2107
|
+
|
2108
|
+
|
2109
|
+
nil
|
2110
|
+
end
|
2111
|
+
|
2112
|
+
def self.fakeRuntime()
|
2113
|
+
|
2114
|
+
runtime = ::Quark.mdk_runtime.MDKRuntime.new()
|
2115
|
+
(runtime).dependencies.registerService("envvar", ::Quark.mdk_runtime.FakeEnvVars.new())
|
2116
|
+
timeService = ::Quark.mdk_runtime.FakeTime.new()
|
2117
|
+
websockets = ::Quark.mdk_runtime.FakeWebSockets.new()
|
2118
|
+
(runtime).dependencies.registerService("time", timeService)
|
2119
|
+
(runtime).dependencies.registerService("schedule", timeService)
|
2120
|
+
(runtime).dependencies.registerService("websockets", websockets)
|
2121
|
+
fileActor = ::Quark.mdk_runtime.files.FileActorImpl.new(runtime)
|
2122
|
+
(runtime).dependencies.registerService("files", fileActor)
|
2123
|
+
(runtime).dispatcher.startActor(timeService)
|
2124
|
+
(runtime).dispatcher.startActor(websockets)
|
2125
|
+
(runtime).dispatcher.startActor(fileActor)
|
2126
|
+
return runtime
|
2127
|
+
|
2128
|
+
|
2129
|
+
nil
|
2130
|
+
end
|
2131
|
+
|
2132
|
+
|
2133
|
+
|
2134
|
+
end # module MdkRuntime
|
2135
|
+
end # module Quark
|