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,814 @@
|
|
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.promise; Promise; end
|
7
|
+
module Promise
|
8
|
+
require "datawire-quark-core"
|
9
|
+
require_relative '../quark/reflect' # 0 ('quark',) ('mdk_runtime',)
|
10
|
+
require_relative '../quark/error' # 0 ('quark',) ('mdk_runtime',)
|
11
|
+
require_relative '../quark' # 0 () ('mdk_runtime',)
|
12
|
+
require_relative '../datawire_mdk_md' # 0 () ('mdk_runtime',)
|
13
|
+
require_relative 'actors' # 1 () ()
|
14
|
+
|
15
|
+
|
16
|
+
##
|
17
|
+
# Resolve a Promise with a result.
|
18
|
+
|
19
|
+
def self._fullfilPromise(promise, value)
|
20
|
+
|
21
|
+
if (::Quark.quark.reflect.QuarkClass.ERROR.hasInstance(value))
|
22
|
+
promise._reject(::DatawireQuarkCore.cast(value) { ::Quark.quark.error.Error })
|
23
|
+
else
|
24
|
+
promise._resolve(value)
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def self._ChainPromise; ChainPromise; end
|
32
|
+
class ChainPromise < ::DatawireQuarkCore::QuarkObject
|
33
|
+
attr_accessor :_next
|
34
|
+
extend ::DatawireQuarkCore::Static
|
35
|
+
|
36
|
+
static mdk_runtime_promise__ChainPromise_ref: -> { nil }
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
def initialize(next_)
|
41
|
+
|
42
|
+
self.__init_fields__
|
43
|
+
(self)._next = next_
|
44
|
+
|
45
|
+
nil
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
def call(arg)
|
52
|
+
|
53
|
+
::Quark.mdk_runtime.promise._fullfilPromise((self)._next, arg)
|
54
|
+
return nil
|
55
|
+
|
56
|
+
nil
|
57
|
+
end
|
58
|
+
|
59
|
+
def _getClass()
|
60
|
+
|
61
|
+
return "mdk_runtime.promise._ChainPromise"
|
62
|
+
|
63
|
+
nil
|
64
|
+
end
|
65
|
+
|
66
|
+
def _getField(name)
|
67
|
+
|
68
|
+
if ((name) == ("_next"))
|
69
|
+
return (self)._next
|
70
|
+
end
|
71
|
+
return nil
|
72
|
+
|
73
|
+
nil
|
74
|
+
end
|
75
|
+
|
76
|
+
def _setField(name, value)
|
77
|
+
|
78
|
+
if ((name) == ("_next"))
|
79
|
+
(self)._next = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.promise.Promise }
|
80
|
+
end
|
81
|
+
|
82
|
+
nil
|
83
|
+
end
|
84
|
+
|
85
|
+
def __init_fields__()
|
86
|
+
|
87
|
+
self._next = nil
|
88
|
+
|
89
|
+
nil
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
end
|
94
|
+
ChainPromise.unlazy_statics
|
95
|
+
|
96
|
+
def self._CallbackEvent; CallbackEvent; end
|
97
|
+
class CallbackEvent < ::DatawireQuarkCore::QuarkObject
|
98
|
+
attr_accessor :_callable, :_next, :_value
|
99
|
+
extend ::DatawireQuarkCore::Static
|
100
|
+
|
101
|
+
static mdk_runtime_promise__CallbackEvent_ref: -> { nil }
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
def initialize(callable, next_, value)
|
106
|
+
|
107
|
+
self.__init_fields__
|
108
|
+
(self)._callable = callable
|
109
|
+
(self)._next = next_
|
110
|
+
(self)._value = value
|
111
|
+
|
112
|
+
nil
|
113
|
+
end
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
def deliver()
|
119
|
+
|
120
|
+
result = ((self)._callable).call((self)._value)
|
121
|
+
if (::Quark.quark.reflect.QuarkClass.get("mdk_runtime.promise.Promise").hasInstance(result))
|
122
|
+
toChain = ::DatawireQuarkCore.cast(result) { ::Quark.mdk_runtime.promise.Promise }
|
123
|
+
toChain.andFinally(::Quark.mdk_runtime.promise._ChainPromise.new((self)._next))
|
124
|
+
else
|
125
|
+
::Quark.mdk_runtime.promise._fullfilPromise((self)._next, result)
|
126
|
+
end
|
127
|
+
|
128
|
+
nil
|
129
|
+
end
|
130
|
+
|
131
|
+
def _getClass()
|
132
|
+
|
133
|
+
return "mdk_runtime.promise._CallbackEvent"
|
134
|
+
|
135
|
+
nil
|
136
|
+
end
|
137
|
+
|
138
|
+
def _getField(name)
|
139
|
+
|
140
|
+
if ((name) == ("_callable"))
|
141
|
+
return (self)._callable
|
142
|
+
end
|
143
|
+
if ((name) == ("_next"))
|
144
|
+
return (self)._next
|
145
|
+
end
|
146
|
+
if ((name) == ("_value"))
|
147
|
+
return (self)._value
|
148
|
+
end
|
149
|
+
return nil
|
150
|
+
|
151
|
+
nil
|
152
|
+
end
|
153
|
+
|
154
|
+
def _setField(name, value)
|
155
|
+
|
156
|
+
if ((name) == ("_callable"))
|
157
|
+
(self)._callable = ::DatawireQuarkCore.cast(value) { ::Quark.quark.UnaryCallable }
|
158
|
+
end
|
159
|
+
if ((name) == ("_next"))
|
160
|
+
(self)._next = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.promise.Promise }
|
161
|
+
end
|
162
|
+
if ((name) == ("_value"))
|
163
|
+
(self)._value = value
|
164
|
+
end
|
165
|
+
|
166
|
+
nil
|
167
|
+
end
|
168
|
+
|
169
|
+
def __init_fields__()
|
170
|
+
|
171
|
+
self._callable = nil
|
172
|
+
self._next = nil
|
173
|
+
self._value = nil
|
174
|
+
|
175
|
+
nil
|
176
|
+
end
|
177
|
+
|
178
|
+
|
179
|
+
end
|
180
|
+
CallbackEvent.unlazy_statics
|
181
|
+
|
182
|
+
def self._Callback; Callback; end
|
183
|
+
class Callback < ::DatawireQuarkCore::QuarkObject
|
184
|
+
attr_accessor :_callable, :_next
|
185
|
+
extend ::DatawireQuarkCore::Static
|
186
|
+
|
187
|
+
static mdk_runtime_promise__Callback_ref: -> { nil }
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
def initialize(callable, next_)
|
192
|
+
|
193
|
+
self.__init_fields__
|
194
|
+
(self)._callable = callable
|
195
|
+
(self)._next = next_
|
196
|
+
|
197
|
+
nil
|
198
|
+
end
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
def call(result)
|
204
|
+
|
205
|
+
event = ::Quark.mdk_runtime.promise._CallbackEvent.new((self)._callable, (self)._next, result)
|
206
|
+
(@_next)._dispatcher._queue(event)
|
207
|
+
|
208
|
+
nil
|
209
|
+
end
|
210
|
+
|
211
|
+
def _getClass()
|
212
|
+
|
213
|
+
return "mdk_runtime.promise._Callback"
|
214
|
+
|
215
|
+
nil
|
216
|
+
end
|
217
|
+
|
218
|
+
def _getField(name)
|
219
|
+
|
220
|
+
if ((name) == ("_callable"))
|
221
|
+
return (self)._callable
|
222
|
+
end
|
223
|
+
if ((name) == ("_next"))
|
224
|
+
return (self)._next
|
225
|
+
end
|
226
|
+
return nil
|
227
|
+
|
228
|
+
nil
|
229
|
+
end
|
230
|
+
|
231
|
+
def _setField(name, value)
|
232
|
+
|
233
|
+
if ((name) == ("_callable"))
|
234
|
+
(self)._callable = ::DatawireQuarkCore.cast(value) { ::Quark.quark.UnaryCallable }
|
235
|
+
end
|
236
|
+
if ((name) == ("_next"))
|
237
|
+
(self)._next = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.promise.Promise }
|
238
|
+
end
|
239
|
+
|
240
|
+
nil
|
241
|
+
end
|
242
|
+
|
243
|
+
def __init_fields__()
|
244
|
+
|
245
|
+
self._callable = nil
|
246
|
+
self._next = nil
|
247
|
+
|
248
|
+
nil
|
249
|
+
end
|
250
|
+
|
251
|
+
|
252
|
+
end
|
253
|
+
Callback.unlazy_statics
|
254
|
+
|
255
|
+
def self._Passthrough; Passthrough; end
|
256
|
+
class Passthrough < ::DatawireQuarkCore::QuarkObject
|
257
|
+
extend ::DatawireQuarkCore::Static
|
258
|
+
|
259
|
+
static mdk_runtime_promise__Passthrough_ref: -> { nil }
|
260
|
+
|
261
|
+
|
262
|
+
|
263
|
+
def initialize()
|
264
|
+
self.__init_fields__
|
265
|
+
|
266
|
+
nil
|
267
|
+
end
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
|
272
|
+
def call(arg)
|
273
|
+
|
274
|
+
return arg
|
275
|
+
|
276
|
+
nil
|
277
|
+
end
|
278
|
+
|
279
|
+
def _getClass()
|
280
|
+
|
281
|
+
return "mdk_runtime.promise._Passthrough"
|
282
|
+
|
283
|
+
nil
|
284
|
+
end
|
285
|
+
|
286
|
+
def _getField(name)
|
287
|
+
|
288
|
+
return nil
|
289
|
+
|
290
|
+
nil
|
291
|
+
end
|
292
|
+
|
293
|
+
def _setField(name, value)
|
294
|
+
|
295
|
+
nil
|
296
|
+
|
297
|
+
nil
|
298
|
+
end
|
299
|
+
|
300
|
+
def __init_fields__()
|
301
|
+
|
302
|
+
|
303
|
+
nil
|
304
|
+
end
|
305
|
+
|
306
|
+
|
307
|
+
end
|
308
|
+
Passthrough.unlazy_statics
|
309
|
+
|
310
|
+
def self._CallIfIsInstance; CallIfIsInstance; end
|
311
|
+
class CallIfIsInstance < ::DatawireQuarkCore::QuarkObject
|
312
|
+
attr_accessor :_underlying, :_class
|
313
|
+
extend ::DatawireQuarkCore::Static
|
314
|
+
|
315
|
+
static mdk_runtime_promise__CallIfIsInstance_ref: -> { nil }
|
316
|
+
|
317
|
+
|
318
|
+
|
319
|
+
def initialize(underlying, klass)
|
320
|
+
|
321
|
+
self.__init_fields__
|
322
|
+
(self)._underlying = underlying
|
323
|
+
(self)._class = klass
|
324
|
+
|
325
|
+
nil
|
326
|
+
end
|
327
|
+
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
def call(arg)
|
332
|
+
|
333
|
+
if ((self)._class.hasInstance(arg))
|
334
|
+
return ((self)._underlying).call(arg)
|
335
|
+
else
|
336
|
+
return arg
|
337
|
+
end
|
338
|
+
|
339
|
+
nil
|
340
|
+
end
|
341
|
+
|
342
|
+
def _getClass()
|
343
|
+
|
344
|
+
return "mdk_runtime.promise._CallIfIsInstance"
|
345
|
+
|
346
|
+
nil
|
347
|
+
end
|
348
|
+
|
349
|
+
def _getField(name)
|
350
|
+
|
351
|
+
if ((name) == ("_underlying"))
|
352
|
+
return (self)._underlying
|
353
|
+
end
|
354
|
+
if ((name) == ("_class"))
|
355
|
+
return (self)._class
|
356
|
+
end
|
357
|
+
return nil
|
358
|
+
|
359
|
+
nil
|
360
|
+
end
|
361
|
+
|
362
|
+
def _setField(name, value)
|
363
|
+
|
364
|
+
if ((name) == ("_underlying"))
|
365
|
+
(self)._underlying = ::DatawireQuarkCore.cast(value) { ::Quark.quark.UnaryCallable }
|
366
|
+
end
|
367
|
+
if ((name) == ("_class"))
|
368
|
+
(self)._class = ::DatawireQuarkCore.cast(value) { ::Quark.quark.reflect.QuarkClass }
|
369
|
+
end
|
370
|
+
|
371
|
+
nil
|
372
|
+
end
|
373
|
+
|
374
|
+
def __init_fields__()
|
375
|
+
|
376
|
+
self._underlying = nil
|
377
|
+
self._class = nil
|
378
|
+
|
379
|
+
nil
|
380
|
+
end
|
381
|
+
|
382
|
+
|
383
|
+
end
|
384
|
+
CallIfIsInstance.unlazy_statics
|
385
|
+
|
386
|
+
def self.PromiseValue; PromiseValue; end
|
387
|
+
##
|
388
|
+
# Snapshot of the value of a Promise, if it has one.
|
389
|
+
|
390
|
+
class PromiseValue < ::DatawireQuarkCore::QuarkObject
|
391
|
+
attr_accessor :_successResult, :_failureResult, :_hasValue
|
392
|
+
extend ::DatawireQuarkCore::Static
|
393
|
+
|
394
|
+
static mdk_runtime_promise_PromiseValue_ref: -> { nil }
|
395
|
+
|
396
|
+
|
397
|
+
|
398
|
+
def initialize(successResult, failureResult, hasValue)
|
399
|
+
|
400
|
+
self.__init_fields__
|
401
|
+
(self)._successResult = successResult
|
402
|
+
(self)._failureResult = failureResult
|
403
|
+
(self)._hasValue = hasValue
|
404
|
+
|
405
|
+
nil
|
406
|
+
end
|
407
|
+
|
408
|
+
|
409
|
+
|
410
|
+
|
411
|
+
##
|
412
|
+
# Return true if the Promise had a value at the time this was created.
|
413
|
+
|
414
|
+
def hasValue()
|
415
|
+
|
416
|
+
return (self)._hasValue
|
417
|
+
|
418
|
+
nil
|
419
|
+
end
|
420
|
+
|
421
|
+
##
|
422
|
+
# Return true if value is error. Result is only valid if hasValue() is true.
|
423
|
+
|
424
|
+
def isError()
|
425
|
+
|
426
|
+
return ((self)._failureResult) != (nil)
|
427
|
+
|
428
|
+
nil
|
429
|
+
end
|
430
|
+
|
431
|
+
##
|
432
|
+
# Return the value. Result is only valid if hasValue() is true.
|
433
|
+
|
434
|
+
def getValue()
|
435
|
+
|
436
|
+
if (self.isError())
|
437
|
+
return (self)._failureResult
|
438
|
+
else
|
439
|
+
return (self)._successResult
|
440
|
+
end
|
441
|
+
|
442
|
+
nil
|
443
|
+
end
|
444
|
+
|
445
|
+
def _getClass()
|
446
|
+
|
447
|
+
return "mdk_runtime.promise.PromiseValue"
|
448
|
+
|
449
|
+
nil
|
450
|
+
end
|
451
|
+
|
452
|
+
def _getField(name)
|
453
|
+
|
454
|
+
if ((name) == ("_successResult"))
|
455
|
+
return (self)._successResult
|
456
|
+
end
|
457
|
+
if ((name) == ("_failureResult"))
|
458
|
+
return (self)._failureResult
|
459
|
+
end
|
460
|
+
if ((name) == ("_hasValue"))
|
461
|
+
return (self)._hasValue
|
462
|
+
end
|
463
|
+
return nil
|
464
|
+
|
465
|
+
nil
|
466
|
+
end
|
467
|
+
|
468
|
+
def _setField(name, value)
|
469
|
+
|
470
|
+
if ((name) == ("_successResult"))
|
471
|
+
(self)._successResult = value
|
472
|
+
end
|
473
|
+
if ((name) == ("_failureResult"))
|
474
|
+
(self)._failureResult = ::DatawireQuarkCore.cast(value) { ::Quark.quark.error.Error }
|
475
|
+
end
|
476
|
+
if ((name) == ("_hasValue"))
|
477
|
+
(self)._hasValue = ::DatawireQuarkCore.cast(value) { ::Object }
|
478
|
+
end
|
479
|
+
|
480
|
+
nil
|
481
|
+
end
|
482
|
+
|
483
|
+
def __init_fields__()
|
484
|
+
|
485
|
+
self._successResult = nil
|
486
|
+
self._failureResult = nil
|
487
|
+
self._hasValue = nil
|
488
|
+
|
489
|
+
nil
|
490
|
+
end
|
491
|
+
|
492
|
+
|
493
|
+
end
|
494
|
+
PromiseValue.unlazy_statics
|
495
|
+
|
496
|
+
def self.Promise; Promise; end
|
497
|
+
##
|
498
|
+
# An object that will eventually have a result.
|
499
|
+
# Results are passed to callables whose return value is passed
|
500
|
+
# to resulting Promise. If a return result is a Promise it will
|
501
|
+
# be chained automatically, i.e. callables will never be called
|
502
|
+
# with a Promise, only with values.
|
503
|
+
|
504
|
+
class Promise < ::DatawireQuarkCore::QuarkObject
|
505
|
+
attr_accessor :_lock, :_successResult, :_failureResult, :_hasResult, :_successCallbacks, :_failureCallbacks, :_dispatcher
|
506
|
+
extend ::DatawireQuarkCore::Static
|
507
|
+
|
508
|
+
static quark_List_mdk_runtime_promise__Callback__ref: -> { nil }
|
509
|
+
static mdk_runtime_promise_Promise_ref: -> { nil }
|
510
|
+
|
511
|
+
|
512
|
+
|
513
|
+
def initialize(dispatcher)
|
514
|
+
|
515
|
+
self.__init_fields__
|
516
|
+
(self)._dispatcher = dispatcher
|
517
|
+
(self)._lock = ::DatawireQuarkCore::Lock.new()
|
518
|
+
(self)._hasResult = false
|
519
|
+
(self)._successResult = nil
|
520
|
+
(self)._failureResult = ::DatawireQuarkCore.cast(nil) { ::Quark.quark.error.Error }
|
521
|
+
(self)._successCallbacks = ::DatawireQuarkCore::List.new([])
|
522
|
+
(self)._failureCallbacks = ::DatawireQuarkCore::List.new([])
|
523
|
+
|
524
|
+
nil
|
525
|
+
end
|
526
|
+
|
527
|
+
|
528
|
+
|
529
|
+
|
530
|
+
def _maybeRunCallbacks()
|
531
|
+
|
532
|
+
(self)._lock.acquire()
|
533
|
+
if (!((self)._hasResult))
|
534
|
+
(self)._lock.release()
|
535
|
+
return
|
536
|
+
end
|
537
|
+
callbacks = (self)._successCallbacks
|
538
|
+
value = (self)._successResult
|
539
|
+
if (((self)._failureResult) != (nil))
|
540
|
+
callbacks = (self)._failureCallbacks
|
541
|
+
value = (self)._failureResult
|
542
|
+
end
|
543
|
+
(self)._failureCallbacks = ::DatawireQuarkCore::List.new([])
|
544
|
+
(self)._successCallbacks = ::DatawireQuarkCore::List.new([])
|
545
|
+
(self)._lock.release()
|
546
|
+
idx = 0
|
547
|
+
while ((idx) < ((callbacks).size)) do
|
548
|
+
(callbacks)[idx].call(value)
|
549
|
+
idx = (idx) + (1)
|
550
|
+
end
|
551
|
+
|
552
|
+
nil
|
553
|
+
end
|
554
|
+
|
555
|
+
def _resolve(result)
|
556
|
+
|
557
|
+
if (::Quark.quark.reflect.QuarkClass.ERROR.hasInstance(result))
|
558
|
+
self._reject(::DatawireQuarkCore.cast(result) { ::Quark.quark.error.Error })
|
559
|
+
return
|
560
|
+
end
|
561
|
+
(self)._lock.acquire()
|
562
|
+
if ((self)._hasResult)
|
563
|
+
::DatawireQuarkCore.print("BUG: Resolved Promise that already has a value.")
|
564
|
+
(self)._lock.release()
|
565
|
+
return
|
566
|
+
end
|
567
|
+
(self)._hasResult = true
|
568
|
+
(self)._successResult = result
|
569
|
+
(self)._lock.release()
|
570
|
+
self._maybeRunCallbacks()
|
571
|
+
|
572
|
+
nil
|
573
|
+
end
|
574
|
+
|
575
|
+
def _reject(err)
|
576
|
+
|
577
|
+
(self)._lock.acquire()
|
578
|
+
if ((self)._hasResult)
|
579
|
+
::DatawireQuarkCore.print("BUG: Rejected Promise that already has a value.")
|
580
|
+
(self)._lock.release()
|
581
|
+
return
|
582
|
+
end
|
583
|
+
(self)._hasResult = true
|
584
|
+
(self)._failureResult = err
|
585
|
+
(self)._lock.release()
|
586
|
+
self._maybeRunCallbacks()
|
587
|
+
|
588
|
+
nil
|
589
|
+
end
|
590
|
+
|
591
|
+
##
|
592
|
+
# Add callback that will be called on non-Error values.
|
593
|
+
# Its result will become the value of the returned Promise.
|
594
|
+
|
595
|
+
def andThen(callable)
|
596
|
+
|
597
|
+
return self.andEither(callable, ::Quark.mdk_runtime.promise._Passthrough.new())
|
598
|
+
|
599
|
+
nil
|
600
|
+
end
|
601
|
+
|
602
|
+
##
|
603
|
+
# Add callback that will be called on Error values.
|
604
|
+
# Its result will become the value of the returned Promise.
|
605
|
+
|
606
|
+
def andCatch(errorClass, callable)
|
607
|
+
|
608
|
+
return self.andEither(::Quark.mdk_runtime.promise._Passthrough.new(), ::Quark.mdk_runtime.promise._CallIfIsInstance.new(callable, errorClass))
|
609
|
+
|
610
|
+
nil
|
611
|
+
end
|
612
|
+
|
613
|
+
##
|
614
|
+
# Callback that will be called for both success and error results.
|
615
|
+
|
616
|
+
def andFinally(callable)
|
617
|
+
|
618
|
+
return self.andEither(callable, callable)
|
619
|
+
|
620
|
+
nil
|
621
|
+
end
|
622
|
+
|
623
|
+
##
|
624
|
+
# Two callbacks, one for success and one for error results.
|
625
|
+
|
626
|
+
def andEither(success, failure)
|
627
|
+
|
628
|
+
result = ::Quark.mdk_runtime.promise.Promise.new((self)._dispatcher)
|
629
|
+
(self)._lock.acquire()
|
630
|
+
((self)._successCallbacks) << (::Quark.mdk_runtime.promise._Callback.new(success, result))
|
631
|
+
((self)._failureCallbacks) << (::Quark.mdk_runtime.promise._Callback.new(failure, result))
|
632
|
+
(self)._lock.release()
|
633
|
+
self._maybeRunCallbacks()
|
634
|
+
return result
|
635
|
+
|
636
|
+
nil
|
637
|
+
end
|
638
|
+
|
639
|
+
##
|
640
|
+
# Synchronous extraction of the promise's current value, if it has any.
|
641
|
+
# Its result will become the value of the returned Promise.
|
642
|
+
|
643
|
+
def value()
|
644
|
+
|
645
|
+
(self)._lock.acquire()
|
646
|
+
result = ::Quark.mdk_runtime.promise.PromiseValue.new((self)._successResult, (self)._failureResult, (self)._hasResult)
|
647
|
+
(self)._lock.release()
|
648
|
+
return result
|
649
|
+
|
650
|
+
nil
|
651
|
+
end
|
652
|
+
|
653
|
+
def _getClass()
|
654
|
+
|
655
|
+
return "mdk_runtime.promise.Promise"
|
656
|
+
|
657
|
+
nil
|
658
|
+
end
|
659
|
+
|
660
|
+
def _getField(name)
|
661
|
+
|
662
|
+
if ((name) == ("_lock"))
|
663
|
+
return (self)._lock
|
664
|
+
end
|
665
|
+
if ((name) == ("_successResult"))
|
666
|
+
return (self)._successResult
|
667
|
+
end
|
668
|
+
if ((name) == ("_failureResult"))
|
669
|
+
return (self)._failureResult
|
670
|
+
end
|
671
|
+
if ((name) == ("_hasResult"))
|
672
|
+
return (self)._hasResult
|
673
|
+
end
|
674
|
+
if ((name) == ("_successCallbacks"))
|
675
|
+
return (self)._successCallbacks
|
676
|
+
end
|
677
|
+
if ((name) == ("_failureCallbacks"))
|
678
|
+
return (self)._failureCallbacks
|
679
|
+
end
|
680
|
+
if ((name) == ("_dispatcher"))
|
681
|
+
return (self)._dispatcher
|
682
|
+
end
|
683
|
+
return nil
|
684
|
+
|
685
|
+
nil
|
686
|
+
end
|
687
|
+
|
688
|
+
def _setField(name, value)
|
689
|
+
|
690
|
+
if ((name) == ("_lock"))
|
691
|
+
(self)._lock = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::Lock }
|
692
|
+
end
|
693
|
+
if ((name) == ("_successResult"))
|
694
|
+
(self)._successResult = value
|
695
|
+
end
|
696
|
+
if ((name) == ("_failureResult"))
|
697
|
+
(self)._failureResult = ::DatawireQuarkCore.cast(value) { ::Quark.quark.error.Error }
|
698
|
+
end
|
699
|
+
if ((name) == ("_hasResult"))
|
700
|
+
(self)._hasResult = ::DatawireQuarkCore.cast(value) { ::Object }
|
701
|
+
end
|
702
|
+
if ((name) == ("_successCallbacks"))
|
703
|
+
(self)._successCallbacks = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List }
|
704
|
+
end
|
705
|
+
if ((name) == ("_failureCallbacks"))
|
706
|
+
(self)._failureCallbacks = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List }
|
707
|
+
end
|
708
|
+
if ((name) == ("_dispatcher"))
|
709
|
+
(self)._dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
|
710
|
+
end
|
711
|
+
|
712
|
+
nil
|
713
|
+
end
|
714
|
+
|
715
|
+
def __init_fields__()
|
716
|
+
|
717
|
+
self._lock = nil
|
718
|
+
self._successResult = nil
|
719
|
+
self._failureResult = nil
|
720
|
+
self._hasResult = nil
|
721
|
+
self._successCallbacks = nil
|
722
|
+
self._failureCallbacks = nil
|
723
|
+
self._dispatcher = nil
|
724
|
+
|
725
|
+
nil
|
726
|
+
end
|
727
|
+
|
728
|
+
|
729
|
+
end
|
730
|
+
Promise.unlazy_statics
|
731
|
+
|
732
|
+
def self.PromiseResolver; PromiseResolver; end
|
733
|
+
##
|
734
|
+
# Create Promises and input their initial value.
|
735
|
+
#
|
736
|
+
|
737
|
+
class PromiseResolver < ::DatawireQuarkCore::QuarkObject
|
738
|
+
attr_accessor :promise
|
739
|
+
extend ::DatawireQuarkCore::Static
|
740
|
+
|
741
|
+
static mdk_runtime_promise_PromiseResolver_ref: -> { nil }
|
742
|
+
|
743
|
+
|
744
|
+
|
745
|
+
def initialize(dispatcher)
|
746
|
+
|
747
|
+
self.__init_fields__
|
748
|
+
(self).promise = ::Quark.mdk_runtime.promise.Promise.new(dispatcher)
|
749
|
+
|
750
|
+
nil
|
751
|
+
end
|
752
|
+
|
753
|
+
|
754
|
+
|
755
|
+
|
756
|
+
##
|
757
|
+
# Set the attached Promise's initial value.
|
758
|
+
|
759
|
+
def resolve(result)
|
760
|
+
|
761
|
+
(self).promise._resolve(result)
|
762
|
+
|
763
|
+
nil
|
764
|
+
end
|
765
|
+
|
766
|
+
##
|
767
|
+
# Set the attached Promise's initial value to an Error.
|
768
|
+
|
769
|
+
def reject(err)
|
770
|
+
|
771
|
+
(self).promise._reject(err)
|
772
|
+
|
773
|
+
nil
|
774
|
+
end
|
775
|
+
|
776
|
+
def _getClass()
|
777
|
+
|
778
|
+
return "mdk_runtime.promise.PromiseResolver"
|
779
|
+
|
780
|
+
nil
|
781
|
+
end
|
782
|
+
|
783
|
+
def _getField(name)
|
784
|
+
|
785
|
+
if ((name) == ("promise"))
|
786
|
+
return (self).promise
|
787
|
+
end
|
788
|
+
return nil
|
789
|
+
|
790
|
+
nil
|
791
|
+
end
|
792
|
+
|
793
|
+
def _setField(name, value)
|
794
|
+
|
795
|
+
if ((name) == ("promise"))
|
796
|
+
(self).promise = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.promise.Promise }
|
797
|
+
end
|
798
|
+
|
799
|
+
nil
|
800
|
+
end
|
801
|
+
|
802
|
+
def __init_fields__()
|
803
|
+
|
804
|
+
self.promise = nil
|
805
|
+
|
806
|
+
nil
|
807
|
+
end
|
808
|
+
|
809
|
+
|
810
|
+
end
|
811
|
+
PromiseResolver.unlazy_statics
|
812
|
+
end # module Promise
|
813
|
+
end # module MdkRuntime
|
814
|
+
end # module Quark
|