datawire_mdk 2.0.36 → 2.0.37

Sign up to get free protection for your applications and to get access to all the features.
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