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
@@ -0,0 +1,457 @@
|
|
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
|
+
def self.actors; Actors; end
|
7
|
+
module Actors
|
8
|
+
require "datawire-quark-core"
|
9
|
+
require_relative '../quark/reflect' # 0 ('quark',) ('mdk_runtime',)
|
10
|
+
require_relative '../datawire_mdk_md' # 0 () ('mdk_runtime',)
|
11
|
+
require_relative '../quark' # 0 () ('mdk_runtime',)
|
12
|
+
require_relative '../quark/concurrent' # 0 ('quark',) ('mdk_runtime',)
|
13
|
+
|
14
|
+
|
15
|
+
def self.Actor; Actor; end
|
16
|
+
##
|
17
|
+
# A store of some state. Emits events and handles events.
|
18
|
+
|
19
|
+
class Actor < ::DatawireQuarkCore::QuarkObject
|
20
|
+
extend ::DatawireQuarkCore::Static
|
21
|
+
|
22
|
+
static mdk_runtime_actors_Actor_ref: -> { nil }
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
def initialize()
|
27
|
+
self.__init_fields__
|
28
|
+
|
29
|
+
nil
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
##
|
36
|
+
# The Actor should start operating.
|
37
|
+
|
38
|
+
def onStart(dispatcher)
|
39
|
+
raise NotImplementedError, '`Actor.onStart` is an abstract method'
|
40
|
+
|
41
|
+
nil
|
42
|
+
end
|
43
|
+
|
44
|
+
##
|
45
|
+
# The Actor should begin shutting down.
|
46
|
+
|
47
|
+
def onStop()
|
48
|
+
|
49
|
+
nil
|
50
|
+
|
51
|
+
nil
|
52
|
+
end
|
53
|
+
|
54
|
+
##
|
55
|
+
# Called on incoming one-way message from another actor sent via tell().
|
56
|
+
|
57
|
+
def onMessage(origin, message)
|
58
|
+
raise NotImplementedError, '`Actor.onMessage` is an abstract method'
|
59
|
+
|
60
|
+
nil
|
61
|
+
end
|
62
|
+
|
63
|
+
def __init_fields__()
|
64
|
+
|
65
|
+
|
66
|
+
nil
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
end
|
71
|
+
Actor.unlazy_statics
|
72
|
+
|
73
|
+
def self._QueuedMessage; QueuedMessage; end
|
74
|
+
##
|
75
|
+
# A message that can be queued for delivery in a MessageDispatcher.
|
76
|
+
|
77
|
+
class QueuedMessage < ::DatawireQuarkCore::QuarkObject
|
78
|
+
extend ::DatawireQuarkCore::Static
|
79
|
+
|
80
|
+
static mdk_runtime_actors__QueuedMessage_ref: -> { nil }
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
def initialize()
|
85
|
+
self.__init_fields__
|
86
|
+
|
87
|
+
nil
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
def deliver()
|
94
|
+
raise NotImplementedError, '`_QueuedMessage.deliver` is an abstract method'
|
95
|
+
|
96
|
+
nil
|
97
|
+
end
|
98
|
+
|
99
|
+
def __init_fields__()
|
100
|
+
|
101
|
+
|
102
|
+
nil
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
end
|
107
|
+
QueuedMessage.unlazy_statics
|
108
|
+
|
109
|
+
def self._InFlightMessage; InFlightMessage; end
|
110
|
+
##
|
111
|
+
# A message that queued for delivery by a MessageDispatcher.
|
112
|
+
|
113
|
+
class InFlightMessage < ::DatawireQuarkCore::QuarkObject
|
114
|
+
attr_accessor :origin, :msg, :destination
|
115
|
+
extend ::DatawireQuarkCore::Static
|
116
|
+
|
117
|
+
static mdk_runtime_actors__InFlightMessage_ref: -> { nil }
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
def initialize(origin, msg, destination)
|
122
|
+
|
123
|
+
self.__init_fields__
|
124
|
+
(self).origin = origin
|
125
|
+
(self).msg = msg
|
126
|
+
(self).destination = destination
|
127
|
+
|
128
|
+
nil
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
##
|
135
|
+
# Deliver the message.
|
136
|
+
|
137
|
+
def deliver()
|
138
|
+
|
139
|
+
(self).destination.onMessage((self).origin, (self).msg)
|
140
|
+
|
141
|
+
nil
|
142
|
+
end
|
143
|
+
|
144
|
+
def toString()
|
145
|
+
|
146
|
+
return (((((("{") + ((@origin).to_s)) + ("->")) + ((@destination).to_s)) + (": ")) + ((@msg).to_s)) + ("}")
|
147
|
+
|
148
|
+
nil
|
149
|
+
end
|
150
|
+
|
151
|
+
def _getClass()
|
152
|
+
|
153
|
+
return "mdk_runtime.actors._InFlightMessage"
|
154
|
+
|
155
|
+
nil
|
156
|
+
end
|
157
|
+
|
158
|
+
def _getField(name)
|
159
|
+
|
160
|
+
if ((name) == ("origin"))
|
161
|
+
return (self).origin
|
162
|
+
end
|
163
|
+
if ((name) == ("msg"))
|
164
|
+
return (self).msg
|
165
|
+
end
|
166
|
+
if ((name) == ("destination"))
|
167
|
+
return (self).destination
|
168
|
+
end
|
169
|
+
return nil
|
170
|
+
|
171
|
+
nil
|
172
|
+
end
|
173
|
+
|
174
|
+
def _setField(name, value)
|
175
|
+
|
176
|
+
if ((name) == ("origin"))
|
177
|
+
(self).origin = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.Actor }
|
178
|
+
end
|
179
|
+
if ((name) == ("msg"))
|
180
|
+
(self).msg = value
|
181
|
+
end
|
182
|
+
if ((name) == ("destination"))
|
183
|
+
(self).destination = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.Actor }
|
184
|
+
end
|
185
|
+
|
186
|
+
nil
|
187
|
+
end
|
188
|
+
|
189
|
+
def __init_fields__()
|
190
|
+
|
191
|
+
self.origin = nil
|
192
|
+
self.msg = nil
|
193
|
+
self.destination = nil
|
194
|
+
|
195
|
+
nil
|
196
|
+
end
|
197
|
+
|
198
|
+
|
199
|
+
end
|
200
|
+
InFlightMessage.unlazy_statics
|
201
|
+
|
202
|
+
def self._StartStopActor; StartStopActor; end
|
203
|
+
##
|
204
|
+
# Start or stop an Actor.
|
205
|
+
|
206
|
+
class StartStopActor < ::DatawireQuarkCore::QuarkObject
|
207
|
+
attr_accessor :actor, :dispatcher, :start
|
208
|
+
extend ::DatawireQuarkCore::Static
|
209
|
+
|
210
|
+
static mdk_runtime_actors__StartStopActor_ref: -> { nil }
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
def initialize(actor, dispatcher, start)
|
215
|
+
|
216
|
+
self.__init_fields__
|
217
|
+
(self).actor = actor
|
218
|
+
(self).dispatcher = dispatcher
|
219
|
+
(self).start = start
|
220
|
+
|
221
|
+
nil
|
222
|
+
end
|
223
|
+
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
def toString()
|
228
|
+
|
229
|
+
result = "stopping"
|
230
|
+
if ((self).start)
|
231
|
+
result = "starting"
|
232
|
+
end
|
233
|
+
return ((result) + (" ")) + (((self).actor).to_s)
|
234
|
+
|
235
|
+
nil
|
236
|
+
end
|
237
|
+
|
238
|
+
def deliver()
|
239
|
+
|
240
|
+
if ((self).start)
|
241
|
+
(self).actor.onStart((self).dispatcher)
|
242
|
+
else
|
243
|
+
(self).actor.onStop()
|
244
|
+
end
|
245
|
+
|
246
|
+
nil
|
247
|
+
end
|
248
|
+
|
249
|
+
def _getClass()
|
250
|
+
|
251
|
+
return "mdk_runtime.actors._StartStopActor"
|
252
|
+
|
253
|
+
nil
|
254
|
+
end
|
255
|
+
|
256
|
+
def _getField(name)
|
257
|
+
|
258
|
+
if ((name) == ("actor"))
|
259
|
+
return (self).actor
|
260
|
+
end
|
261
|
+
if ((name) == ("dispatcher"))
|
262
|
+
return (self).dispatcher
|
263
|
+
end
|
264
|
+
if ((name) == ("start"))
|
265
|
+
return (self).start
|
266
|
+
end
|
267
|
+
return nil
|
268
|
+
|
269
|
+
nil
|
270
|
+
end
|
271
|
+
|
272
|
+
def _setField(name, value)
|
273
|
+
|
274
|
+
if ((name) == ("actor"))
|
275
|
+
(self).actor = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.Actor }
|
276
|
+
end
|
277
|
+
if ((name) == ("dispatcher"))
|
278
|
+
(self).dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
|
279
|
+
end
|
280
|
+
if ((name) == ("start"))
|
281
|
+
(self).start = ::DatawireQuarkCore.cast(value) { ::Object }
|
282
|
+
end
|
283
|
+
|
284
|
+
nil
|
285
|
+
end
|
286
|
+
|
287
|
+
def __init_fields__()
|
288
|
+
|
289
|
+
self.actor = nil
|
290
|
+
self.dispatcher = nil
|
291
|
+
self.start = nil
|
292
|
+
|
293
|
+
nil
|
294
|
+
end
|
295
|
+
|
296
|
+
|
297
|
+
end
|
298
|
+
StartStopActor.unlazy_statics
|
299
|
+
|
300
|
+
def self.MessageDispatcher; MessageDispatcher; end
|
301
|
+
##
|
302
|
+
# Manage a group of related Actors.
|
303
|
+
#
|
304
|
+
# Each Actor should only be started and used by one MessageDispatcher.
|
305
|
+
#
|
306
|
+
# Reduce accidental re-entrancy by making sure messages are run asynchronously.
|
307
|
+
#
|
308
|
+
|
309
|
+
class MessageDispatcher < ::DatawireQuarkCore::QuarkObject
|
310
|
+
attr_accessor :logger, :_queued, :_delivering, :_lock
|
311
|
+
extend ::DatawireQuarkCore::Static
|
312
|
+
|
313
|
+
static quark_List_mdk_runtime_actors__QueuedMessage__ref: -> { nil }
|
314
|
+
static mdk_runtime_actors_MessageDispatcher_ref: -> { nil }
|
315
|
+
|
316
|
+
|
317
|
+
|
318
|
+
def initialize()
|
319
|
+
self.__init_fields__
|
320
|
+
|
321
|
+
nil
|
322
|
+
end
|
323
|
+
|
324
|
+
|
325
|
+
|
326
|
+
|
327
|
+
##
|
328
|
+
# Queue a message from origin to destination, and trigger delivery if necessary.
|
329
|
+
|
330
|
+
def tell(origin, message, destination)
|
331
|
+
|
332
|
+
inFlight = ::Quark.mdk_runtime.actors._InFlightMessage.new(origin, message, destination)
|
333
|
+
self._queue(inFlight)
|
334
|
+
|
335
|
+
nil
|
336
|
+
end
|
337
|
+
|
338
|
+
##
|
339
|
+
# Start an Actor.
|
340
|
+
|
341
|
+
def startActor(actor)
|
342
|
+
|
343
|
+
self._queue(::Quark.mdk_runtime.actors._StartStopActor.new(actor, self, true))
|
344
|
+
|
345
|
+
nil
|
346
|
+
end
|
347
|
+
|
348
|
+
##
|
349
|
+
# Stop an Actor.
|
350
|
+
|
351
|
+
def stopActor(actor)
|
352
|
+
|
353
|
+
self._queue(::Quark.mdk_runtime.actors._StartStopActor.new(actor, self, false))
|
354
|
+
|
355
|
+
nil
|
356
|
+
end
|
357
|
+
|
358
|
+
def _callQueuedMessage(ignore, message)
|
359
|
+
|
360
|
+
message.deliver()
|
361
|
+
return true
|
362
|
+
|
363
|
+
nil
|
364
|
+
end
|
365
|
+
|
366
|
+
##
|
367
|
+
# Queue a message for delivery.
|
368
|
+
|
369
|
+
def _queue(inFlight)
|
370
|
+
|
371
|
+
@logger.debug(("Queued ") + ((inFlight).to_s))
|
372
|
+
(self)._lock.acquire()
|
373
|
+
((self)._queued) << (inFlight)
|
374
|
+
if ((self)._delivering)
|
375
|
+
(self)._lock.release()
|
376
|
+
return
|
377
|
+
end
|
378
|
+
(self)._delivering = true
|
379
|
+
while ((((self)._queued).size) > (0)) do
|
380
|
+
toDeliver = (self)._queued
|
381
|
+
(self)._queued = ::DatawireQuarkCore::List.new([])
|
382
|
+
(self)._lock.release()
|
383
|
+
idx = 0
|
384
|
+
while ((idx) < ((toDeliver).size)) do
|
385
|
+
@logger.debug(("Delivering ") + (((toDeliver)[idx]).to_s))
|
386
|
+
deliver = ::Quark.quark._BoundMethod.new(self, "_callQueuedMessage", ::DatawireQuarkCore::List.new([(toDeliver)[idx]]))
|
387
|
+
::Quark.quark.concurrent.Context.runtime().callSafely(deliver, false)
|
388
|
+
idx = (idx) + (1)
|
389
|
+
end
|
390
|
+
(self)._lock.acquire()
|
391
|
+
end
|
392
|
+
(self)._delivering = false
|
393
|
+
(self)._lock.release()
|
394
|
+
|
395
|
+
nil
|
396
|
+
end
|
397
|
+
|
398
|
+
def _getClass()
|
399
|
+
|
400
|
+
return "mdk_runtime.actors.MessageDispatcher"
|
401
|
+
|
402
|
+
nil
|
403
|
+
end
|
404
|
+
|
405
|
+
def _getField(name)
|
406
|
+
|
407
|
+
if ((name) == ("logger"))
|
408
|
+
return (self).logger
|
409
|
+
end
|
410
|
+
if ((name) == ("_queued"))
|
411
|
+
return (self)._queued
|
412
|
+
end
|
413
|
+
if ((name) == ("_delivering"))
|
414
|
+
return (self)._delivering
|
415
|
+
end
|
416
|
+
if ((name) == ("_lock"))
|
417
|
+
return (self)._lock
|
418
|
+
end
|
419
|
+
return nil
|
420
|
+
|
421
|
+
nil
|
422
|
+
end
|
423
|
+
|
424
|
+
def _setField(name, value)
|
425
|
+
|
426
|
+
if ((name) == ("logger"))
|
427
|
+
(self).logger = value
|
428
|
+
end
|
429
|
+
if ((name) == ("_queued"))
|
430
|
+
(self)._queued = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List }
|
431
|
+
end
|
432
|
+
if ((name) == ("_delivering"))
|
433
|
+
(self)._delivering = ::DatawireQuarkCore.cast(value) { ::Object }
|
434
|
+
end
|
435
|
+
if ((name) == ("_lock"))
|
436
|
+
(self)._lock = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::Lock }
|
437
|
+
end
|
438
|
+
|
439
|
+
nil
|
440
|
+
end
|
441
|
+
|
442
|
+
def __init_fields__()
|
443
|
+
|
444
|
+
self.logger = ::Quark.quark._getLogger("actors")
|
445
|
+
self._queued = ::DatawireQuarkCore::List.new([])
|
446
|
+
self._delivering = false
|
447
|
+
self._lock = ::DatawireQuarkCore::Lock.new()
|
448
|
+
|
449
|
+
nil
|
450
|
+
end
|
451
|
+
|
452
|
+
|
453
|
+
end
|
454
|
+
MessageDispatcher.unlazy_statics
|
455
|
+
end # module Actors
|
456
|
+
end # module MdkRuntime
|
457
|
+
end # module Quark
|