datawire_mdk 2.0.36 → 2.0.37

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.
data/lib/mdk.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk; Mdk; end
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_discovery; MdkDiscovery; end
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_discovery; MdkDiscovery; end
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_discovery; MdkDiscovery; end
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_introspection; MdkIntrospection; end
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_introspection; MdkIntrospection; end
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_introspection; MdkIntrospection; end
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_metrics; MdkMetrics; end
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_protocol; MdkProtocol; end
@@ -1123,7 +1123,7 @@ class OpenCloseSubscriber < ::DatawireQuarkCore::QuarkObject
1123
1123
  def onWSConnected(websocket)
1124
1124
 
1125
1125
  open = ::Quark.mdk_protocol.Open.new()
1126
- (open).mdkVersion = "2.0.36"
1126
+ (open).mdkVersion = "2.0.37"
1127
1127
  (open).nodeId = (self)._node_id
1128
1128
  (open).environment = @_environment
1129
1129
  (self)._dispatcher.tell(self, open.encode(), websocket)
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_rtp; MdkRtp; end
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_runtime; MdkRuntime; end
@@ -232,7 +232,7 @@ class MDKRuntime < ::DatawireQuarkCore::QuarkObject
232
232
  def __init_fields__()
233
233
 
234
234
  self.dependencies = ::Quark.mdk_runtime.Dependencies.new()
235
- self.dispatcher = ::Quark.mdk_runtime.actors.MessageDispatcher.new()
235
+ self.dispatcher = nil
236
236
 
237
237
  nil
238
238
  end
@@ -984,18 +984,22 @@ class QuarkRuntimeWSActor < ::DatawireQuarkCore::QuarkObject
984
984
 
985
985
  self.logPrologue("ws onMessage (actor message)")
986
986
  self.logTS((" message is from ") + ((origin).to_s))
987
- if ((((::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id) == ("quark.String")) && (((self).state) == ("CONNECTED")))
987
+ messageId = (::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id
988
+ if (((messageId) == ("quark.String")) && (((self).state) == ("CONNECTED")))
988
989
  self.logTS((" send-ish, message is: ") + ((message).to_s))
989
990
  ::Quark.mdk_runtime.log_to_file(("sending: ") + (::DatawireQuarkCore.cast(message) { ::String }))
990
991
  (self).socket.send(::DatawireQuarkCore.cast(message) { ::String })
991
992
  return
992
993
  end
993
- if ((((::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id) == ("mdk_runtime.WSClose")) && (((self).state) == ("CONNECTED")))
994
+ if (((messageId) == ("mdk_runtime.WSClose")) && (((self).state) == ("CONNECTED")))
994
995
  self.logTS(" close-ish, switching to DISCONNECTING state")
995
996
  (self).state = "DISCONNECTING"
996
997
  (self).socket.close()
997
998
  return
998
999
  end
1000
+ if (((messageId) == ("mdk_runtime.WSClose")) && (((self).state) == ("CONNECTING")))
1001
+ (self).state = "DISCONNECTING"
1002
+ end
999
1003
  @logger.warn(((("ws onMessage got unhandled message: ") + ((::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id)) + (" in state ")) + ((self).state))
1000
1004
 
1001
1005
  nil
@@ -1004,8 +1008,9 @@ class QuarkRuntimeWSActor < ::DatawireQuarkCore::QuarkObject
1004
1008
  def onWSConnected(socket)
1005
1009
 
1006
1010
  self.logPrologue("onWSConnected")
1007
- if (((self).state) == ("ERROR"))
1008
- self.logTS("Connection event after error event!")
1011
+ if (((self).state) != ("CONNECTING"))
1012
+ self.logTS((("Connection event when transitioned out of CONNECTING.") + ("Current state: ")) + ((self).state))
1013
+ socket.close()
1009
1014
  return
1010
1015
  end
1011
1016
  (self).state = "CONNECTED"
@@ -1413,9 +1418,6 @@ class QuarkRuntimeTime < ::DatawireQuarkCore::QuarkObject
1413
1418
  end
1414
1419
  sched = ::DatawireQuarkCore.cast(msg) { ::Quark.mdk_runtime.Schedule }
1415
1420
  seconds = (sched).seconds
1416
- if ((seconds) == (0.0))
1417
- seconds = 0.1
1418
- end
1419
1421
  ::Quark.quark.concurrent.Context.runtime().schedule(::Quark.mdk_runtime._ScheduleTask.new(self, origin, (sched).event), seconds)
1420
1422
 
1421
1423
  nil
@@ -1537,6 +1539,7 @@ RealEnvVars.unlazy_statics
1537
1539
  def self.defaultRuntime()
1538
1540
 
1539
1541
  runtime = ::Quark.mdk_runtime.MDKRuntime.new()
1542
+ (runtime).dispatcher = ::Quark.mdk_runtime.actors.MessageDispatcher.new(::Quark.mdk_runtime.actors._QuarkRuntimeLaterCaller.new())
1540
1543
  (runtime).dependencies.registerService("envvar", ::Quark.mdk_runtime.RealEnvVars.new())
1541
1544
  timeService = ::Quark.mdk_runtime.QuarkRuntimeTime.new()
1542
1545
  websockets = ::Quark.mdk_runtime.QuarkRuntimeWebSockets.new()
@@ -2210,6 +2213,7 @@ def self.fakeRuntime()
2210
2213
 
2211
2214
  runtime = ::Quark.mdk_runtime.MDKRuntime.new()
2212
2215
  (runtime).dependencies.registerService("envvar", ::Quark.mdk_runtime.FakeEnvVars.new())
2216
+ (runtime).dispatcher = ::Quark.mdk_runtime.actors.MessageDispatcher.new(::Quark.mdk_runtime.actors._ManualLaterCaller.new())
2213
2217
  timeService = ::Quark.mdk_runtime.FakeTime.new()
2214
2218
  websockets = ::Quark.mdk_runtime.FakeWebSockets.new()
2215
2219
  (runtime).dependencies.registerService("time", timeService)
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-11-21 15:19:16.832800
1
+ # Quark 1.0.452 run at 2016-11-28 14:25:58.554098
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_runtime; MdkRuntime; end
@@ -296,6 +296,194 @@ class StartStopActor < ::DatawireQuarkCore::QuarkObject
296
296
  end
297
297
  StartStopActor.unlazy_statics
298
298
 
299
+ def self._CallLater; CallLater; end
300
+ class CallLater < ::DatawireQuarkCore::QuarkObject
301
+ extend ::DatawireQuarkCore::Static
302
+
303
+ static mdk_runtime_actors__CallLater_ref: -> { nil }
304
+
305
+
306
+
307
+ def initialize()
308
+ self.__init_fields__
309
+
310
+ nil
311
+ end
312
+
313
+
314
+
315
+
316
+ def schedule(t)
317
+ raise NotImplementedError, '`_CallLater.schedule` is an abstract method'
318
+
319
+ nil
320
+ end
321
+
322
+ def runAll()
323
+ raise NotImplementedError, '`_CallLater.runAll` is an abstract method'
324
+
325
+ nil
326
+ end
327
+
328
+ def __init_fields__()
329
+
330
+
331
+ nil
332
+ end
333
+
334
+
335
+ end
336
+ CallLater.unlazy_statics
337
+
338
+ def self._QuarkRuntimeLaterCaller; QuarkRuntimeLaterCaller; end
339
+ class QuarkRuntimeLaterCaller < ::DatawireQuarkCore::QuarkObject
340
+ extend ::DatawireQuarkCore::Static
341
+
342
+ static mdk_runtime_actors__QuarkRuntimeLaterCaller_ref: -> { nil }
343
+
344
+
345
+
346
+ def initialize()
347
+ self.__init_fields__
348
+
349
+ nil
350
+ end
351
+
352
+
353
+
354
+
355
+ def schedule(t)
356
+
357
+ ::Quark.quark.concurrent.Context.runtime().schedule(t, 0.0)
358
+
359
+ nil
360
+ end
361
+
362
+ def runAll()
363
+
364
+ nil
365
+
366
+ nil
367
+ end
368
+
369
+ def _getClass()
370
+
371
+ return "mdk_runtime.actors._QuarkRuntimeLaterCaller"
372
+
373
+ nil
374
+ end
375
+
376
+ def _getField(name)
377
+
378
+ return nil
379
+
380
+ nil
381
+ end
382
+
383
+ def _setField(name, value)
384
+
385
+ nil
386
+
387
+ nil
388
+ end
389
+
390
+ def __init_fields__()
391
+
392
+
393
+ nil
394
+ end
395
+
396
+
397
+ end
398
+ QuarkRuntimeLaterCaller.unlazy_statics
399
+
400
+ def self._ManualLaterCaller; ManualLaterCaller; end
401
+ class ManualLaterCaller < ::DatawireQuarkCore::QuarkObject
402
+ attr_accessor :tasks
403
+ extend ::DatawireQuarkCore::Static
404
+
405
+ static quark_List_quark_Task__ref: -> { nil }
406
+ static mdk_runtime_actors__ManualLaterCaller_ref: -> { nil }
407
+
408
+
409
+
410
+ def initialize()
411
+ self.__init_fields__
412
+
413
+ nil
414
+ end
415
+
416
+
417
+
418
+
419
+ def schedule(t)
420
+
421
+ (@tasks) << (t)
422
+
423
+ nil
424
+ end
425
+
426
+ def doNext()
427
+
428
+ t = (@tasks).delete_at(0)
429
+ t.onExecute(nil)
430
+
431
+ nil
432
+ end
433
+
434
+ def hasNext()
435
+
436
+ return ((@tasks).size) > (0)
437
+
438
+ nil
439
+ end
440
+
441
+ def runAll()
442
+
443
+ while (self.hasNext()) do
444
+ self.doNext()
445
+ end
446
+
447
+ nil
448
+ end
449
+
450
+ def _getClass()
451
+
452
+ return "mdk_runtime.actors._ManualLaterCaller"
453
+
454
+ nil
455
+ end
456
+
457
+ def _getField(name)
458
+
459
+ if ((name) == ("tasks"))
460
+ return (self).tasks
461
+ end
462
+ return nil
463
+
464
+ nil
465
+ end
466
+
467
+ def _setField(name, value)
468
+
469
+ if ((name) == ("tasks"))
470
+ (self).tasks = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List }
471
+ end
472
+
473
+ nil
474
+ end
475
+
476
+ def __init_fields__()
477
+
478
+ self.tasks = ::DatawireQuarkCore::List.new([])
479
+
480
+ nil
481
+ end
482
+
483
+
484
+ end
485
+ ManualLaterCaller.unlazy_statics
486
+
299
487
  def self.MessageDispatcher; MessageDispatcher; end
300
488
  ##
301
489
  # Manage a group of related Actors.
@@ -306,7 +494,7 @@ def self.MessageDispatcher; MessageDispatcher; end
306
494
  #
307
495
 
308
496
  class MessageDispatcher < ::DatawireQuarkCore::QuarkObject
309
- attr_accessor :logger, :_queued, :_delivering, :_lock
497
+ attr_accessor :callLater, :logger, :_queued, :_delivering, :_lock
310
498
  extend ::DatawireQuarkCore::Static
311
499
 
312
500
  static quark_List_mdk_runtime_actors__QueuedMessage__ref: -> { nil }
@@ -314,8 +502,10 @@ class MessageDispatcher < ::DatawireQuarkCore::QuarkObject
314
502
 
315
503
 
316
504
 
317
- def initialize()
505
+ def initialize(callLater)
506
+
318
507
  self.__init_fields__
508
+ (self).callLater = callLater
319
509
 
320
510
  nil
321
511
  end
@@ -370,11 +560,43 @@ class MessageDispatcher < ::DatawireQuarkCore::QuarkObject
370
560
  @logger.debug(("Queued ") + ((inFlight).to_s))
371
561
  (self)._lock.acquire()
372
562
  ((self)._queued) << (inFlight)
373
- if ((self)._delivering)
374
- (self)._lock.release()
375
- return
563
+ if (!((self)._delivering))
564
+ (self)._delivering = true
565
+ @callLater.schedule(self)
566
+ end
567
+ (self)._lock.release()
568
+
569
+ nil
570
+ end
571
+
572
+ ##
573
+ # Are there any messages waiting to be delivered?
574
+
575
+ def queued()
576
+
577
+ (self)._lock.acquire()
578
+ result = (self)._delivering
579
+ (self)._lock.release()
580
+ return result
581
+
582
+ nil
583
+ end
584
+
585
+ ##
586
+ # Causes message delivery to occur when using manual CallLater
587
+
588
+ def pump()
589
+
590
+ while (self.queued()) do
591
+ (self).callLater.runAll()
376
592
  end
377
- (self)._delivering = true
593
+
594
+ nil
595
+ end
596
+
597
+ def onExecute(runtime)
598
+
599
+ (self)._lock.acquire()
378
600
  while ((((self)._queued).size) > (0)) do
379
601
  toDeliver = (self)._queued
380
602
  (self)._queued = ::DatawireQuarkCore::List.new([])
@@ -383,7 +605,10 @@ class MessageDispatcher < ::DatawireQuarkCore::QuarkObject
383
605
  while ((idx) < ((toDeliver).size)) do
384
606
  @logger.debug(("Delivering ") + (((toDeliver)[idx]).to_s))
385
607
  deliver = ::Quark.quark._BoundMethod.new(self, "_callQueuedMessage", ::DatawireQuarkCore::List.new([(toDeliver)[idx]]))
386
- ::Quark.quark.concurrent.Context.runtime().callSafely(deliver, false)
608
+ success = ::DatawireQuarkCore.cast(::Quark.quark.concurrent.Context.runtime().callSafely(deliver, false)) { ::Object }
609
+ if (!(success))
610
+ @logger.warn(("FAILURE when delivering ") + (((toDeliver)[idx]).to_s))
611
+ end
387
612
  idx = (idx) + (1)
388
613
  end
389
614
  (self)._lock.acquire()
@@ -403,6 +628,9 @@ class MessageDispatcher < ::DatawireQuarkCore::QuarkObject
403
628
 
404
629
  def _getField(name)
405
630
 
631
+ if ((name) == ("callLater"))
632
+ return (self).callLater
633
+ end
406
634
  if ((name) == ("logger"))
407
635
  return (self).logger
408
636
  end
@@ -422,6 +650,9 @@ class MessageDispatcher < ::DatawireQuarkCore::QuarkObject
422
650
 
423
651
  def _setField(name, value)
424
652
 
653
+ if ((name) == ("callLater"))
654
+ (self).callLater = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors._CallLater }
655
+ end
425
656
  if ((name) == ("logger"))
426
657
  (self).logger = value
427
658
  end
@@ -440,6 +671,7 @@ class MessageDispatcher < ::DatawireQuarkCore::QuarkObject
440
671
 
441
672
  def __init_fields__()
442
673
 
674
+ self.callLater = nil
443
675
  self.logger = ::Quark.quark._getLogger("actors")
444
676
  self._queued = ::DatawireQuarkCore::List.new([])
445
677
  self._delivering = false