datawire_mdk 2.0.15 → 2.0.16
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 +4 -4
- data/lib/datawire_mdk_md.rb +8145 -13374
- data/lib/mdk.rb +162 -21
- data/lib/mdk_discovery.rb +1 -1
- data/lib/mdk_discovery/protocol.rb +97 -340
- data/lib/mdk_discovery/synapse.rb +1 -1
- data/lib/mdk_introspection.rb +1 -1
- data/lib/mdk_introspection/aws.rb +1 -1
- data/lib/mdk_introspection/kubernetes.rb +1 -1
- data/lib/mdk_protocol.rb +629 -344
- data/lib/mdk_rtp.rb +38 -0
- data/lib/mdk_runtime.rb +17 -2
- data/lib/mdk_runtime/actors.rb +1 -1
- data/lib/mdk_runtime/files.rb +1 -1
- data/lib/mdk_runtime/promise.rb +1 -1
- data/lib/mdk_tracing.rb +35 -124
- data/lib/mdk_tracing/api.rb +2 -1
- data/lib/mdk_tracing/protocol.rb +68 -325
- data/lib/mdk_util.rb +1 -1
- data/lib/quark.rb +10 -2
- data/lib/quark/behaviors.rb +1 -1
- data/lib/quark/concurrent.rb +1 -1
- data/lib/quark/error.rb +1 -1
- data/lib/quark/logging.rb +1 -1
- data/lib/quark/mock.rb +1 -1
- data/lib/quark/os.rb +1 -1
- data/lib/quark/reflect.rb +1 -1
- data/lib/quark/spi.rb +1 -1
- data/lib/quark/spi_api.rb +1 -1
- data/lib/quark/spi_api_tracing.rb +1 -1
- data/lib/quark/test.rb +3 -1
- metadata +3 -2
data/lib/mdk_introspection.rb
CHANGED
data/lib/mdk_protocol.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Quark 1.0.
|
1
|
+
# Quark 1.0.452 run at 2016-10-13 16:26:58.627837
|
2
2
|
module Quark
|
3
3
|
require "quark"
|
4
4
|
def self.mdk_protocol; MdkProtocol; end
|
@@ -12,86 +12,32 @@ require_relative 'mdk_runtime' # 0 () ()
|
|
12
12
|
require_relative 'quark/error' # 0 ('quark',) ()
|
13
13
|
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
attr_accessor :values
|
18
|
-
extend ::DatawireQuarkCore::Static
|
19
|
-
|
20
|
-
static mdk_protocol_Discriminator_ref: -> { nil }
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
def initialize(values)
|
25
|
-
|
26
|
-
self.__init_fields__
|
27
|
-
(self).values = values
|
28
|
-
|
29
|
-
nil
|
30
|
-
end
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
def matches(value)
|
36
|
-
|
37
|
-
idx = 0
|
38
|
-
while ((idx) < ((@values).size)) do
|
39
|
-
if ((value) == ((@values)[idx]))
|
40
|
-
return true
|
41
|
-
end
|
42
|
-
idx = (idx) + (1)
|
43
|
-
end
|
44
|
-
return false
|
45
|
-
|
46
|
-
nil
|
47
|
-
end
|
48
|
-
|
49
|
-
def _getClass()
|
50
|
-
|
51
|
-
return "mdk_protocol.Discriminator"
|
52
|
-
|
53
|
-
nil
|
54
|
-
end
|
55
|
-
|
56
|
-
def _getField(name)
|
57
|
-
|
58
|
-
if ((name) == ("values"))
|
59
|
-
return (self).values
|
60
|
-
end
|
61
|
-
return nil
|
62
|
-
|
63
|
-
nil
|
64
|
-
end
|
15
|
+
##
|
16
|
+
# Returns whether a list contains a given value.
|
65
17
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
18
|
+
def self.contains(values, value)
|
19
|
+
|
20
|
+
idx = 0
|
21
|
+
while ((idx) < ((values).size)) do
|
22
|
+
if ((value) == ((values)[idx]))
|
23
|
+
return true
|
70
24
|
end
|
71
|
-
|
72
|
-
nil
|
73
|
-
end
|
74
|
-
|
75
|
-
def __init_fields__()
|
76
|
-
|
77
|
-
self.values = nil
|
78
|
-
|
79
|
-
nil
|
25
|
+
idx = (idx) + (1)
|
80
26
|
end
|
81
|
-
|
82
|
-
|
83
|
-
end
|
84
|
-
Discriminator.unlazy_statics
|
85
|
-
|
86
|
-
def self.anyof(values)
|
87
|
-
|
88
|
-
return ::Quark.mdk_protocol.Discriminator.new(values)
|
27
|
+
return false
|
89
28
|
|
90
29
|
|
91
30
|
nil
|
92
31
|
end
|
93
32
|
|
94
33
|
def self.Serializable; Serializable; end
|
34
|
+
##
|
35
|
+
# JSON serializable object.
|
36
|
+
#
|
37
|
+
# If it has have a String field called _json_type, that will be set as the
|
38
|
+
# 'type' field in serialized JSON.
|
39
|
+
#
|
40
|
+
|
95
41
|
class Serializable < ::DatawireQuarkCore::QuarkObject
|
96
42
|
extend ::DatawireQuarkCore::Static
|
97
43
|
|
@@ -109,29 +55,15 @@ class Serializable < ::DatawireQuarkCore::QuarkObject
|
|
109
55
|
|
110
56
|
|
111
57
|
##
|
112
|
-
#
|
113
|
-
# or a constructor that takes no arguments.
|
114
|
-
#
|
58
|
+
# Decode JSON into a particular class. XXX TURN INTO FUNCTION
|
115
59
|
|
116
|
-
def self.
|
60
|
+
def self.decodeClassName(name, encoded)
|
117
61
|
|
118
62
|
json = ::DatawireQuarkCore::JSONObject.parse(encoded)
|
119
|
-
|
120
|
-
|
121
|
-
obj
|
122
|
-
|
123
|
-
obj = ::DatawireQuarkCore.cast(meth.invoke(nil, ::DatawireQuarkCore::List.new([type]))) { ::Quark.mdk_protocol.Serializable }
|
124
|
-
if ((obj) == (nil))
|
125
|
-
logger = ::Quark.quark._getLogger("protocol")
|
126
|
-
logger.warn(((((clazz.getName()) + (".")) + (meth.getName())) + (" could not understand this json: ")) + (encoded))
|
127
|
-
return ::DatawireQuarkCore.cast(nil) { ::Quark.mdk_protocol.Serializable }
|
128
|
-
end
|
129
|
-
clazz = ::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(obj))
|
130
|
-
else
|
131
|
-
obj = ::DatawireQuarkCore.cast(clazz.construct(::DatawireQuarkCore::List.new([]))) { ::Quark.mdk_protocol.Serializable }
|
132
|
-
if ((obj) == (nil))
|
133
|
-
raise (((("could not construct ") + (clazz.getName())) + (" from this json: ")) + (encoded))
|
134
|
-
end
|
63
|
+
clazz = ::Quark.quark.reflect.QuarkClass.get(name)
|
64
|
+
obj = ::DatawireQuarkCore.cast(clazz.construct(::DatawireQuarkCore::List.new([]))) { ::Quark.mdk_protocol.Serializable }
|
65
|
+
if ((obj) == (nil))
|
66
|
+
raise (((("could not construct ") + (clazz.getName())) + (" from this json: ")) + (encoded))
|
135
67
|
end
|
136
68
|
::Quark.quark.fromJSON(clazz, obj, json)
|
137
69
|
return obj
|
@@ -139,20 +71,13 @@ class Serializable < ::DatawireQuarkCore::QuarkObject
|
|
139
71
|
nil
|
140
72
|
end
|
141
73
|
|
142
|
-
def self.decodeClassName(name, encoded)
|
143
|
-
|
144
|
-
return ::Quark.mdk_protocol.Serializable.decodeClass(::Quark.quark.reflect.QuarkClass.get(name), encoded)
|
145
|
-
|
146
|
-
nil
|
147
|
-
end
|
148
|
-
|
149
74
|
def encode()
|
150
75
|
|
151
76
|
clazz = ::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(self))
|
152
77
|
json = ::Quark.quark.toJSON(self, clazz)
|
153
|
-
|
154
|
-
if ((
|
155
|
-
(json).setObjectItem(("type"), (::DatawireQuarkCore::JSONObject.new.setString(
|
78
|
+
jsonType = ::DatawireQuarkCore.cast((self)._getField("_json_type")) { ::String }
|
79
|
+
if ((jsonType) != (nil))
|
80
|
+
(json).setObjectItem(("type"), (::DatawireQuarkCore::JSONObject.new.setString(jsonType)))
|
156
81
|
end
|
157
82
|
encoded = json.toString()
|
158
83
|
return encoded
|
@@ -535,120 +460,15 @@ class SharedContext < ::Quark.mdk_protocol.Serializable
|
|
535
460
|
end
|
536
461
|
SharedContext.unlazy_statics
|
537
462
|
|
538
|
-
def self.ProtocolHandler; ProtocolHandler; end
|
539
|
-
class ProtocolHandler < ::DatawireQuarkCore::QuarkObject
|
540
|
-
extend ::DatawireQuarkCore::Static
|
541
|
-
|
542
|
-
static mdk_protocol_ProtocolHandler_ref: -> { nil }
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
def initialize()
|
547
|
-
self.__init_fields__
|
548
|
-
|
549
|
-
nil
|
550
|
-
end
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
def onOpen(open)
|
556
|
-
raise NotImplementedError, '`ProtocolHandler.onOpen` is an abstract method'
|
557
|
-
|
558
|
-
nil
|
559
|
-
end
|
560
|
-
|
561
|
-
def onClose(close)
|
562
|
-
raise NotImplementedError, '`ProtocolHandler.onClose` is an abstract method'
|
563
|
-
|
564
|
-
nil
|
565
|
-
end
|
566
|
-
|
567
|
-
def __init_fields__()
|
568
|
-
|
569
|
-
|
570
|
-
nil
|
571
|
-
end
|
572
|
-
|
573
|
-
|
574
|
-
end
|
575
|
-
ProtocolHandler.unlazy_statics
|
576
|
-
|
577
|
-
def self.ProtocolEvent; ProtocolEvent; end
|
578
|
-
class ProtocolEvent < ::Quark.mdk_protocol.Serializable
|
579
|
-
extend ::DatawireQuarkCore::Static
|
580
|
-
|
581
|
-
static mdk_protocol_ProtocolEvent_ref: -> { nil }
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
def initialize()
|
586
|
-
|
587
|
-
super()
|
588
|
-
|
589
|
-
nil
|
590
|
-
end
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
def self.construct(type)
|
596
|
-
|
597
|
-
if (::Quark.mdk_protocol.Open._discriminator.matches(type))
|
598
|
-
return ::Quark.mdk_protocol.Open.new()
|
599
|
-
end
|
600
|
-
if (::Quark.mdk_protocol.Close._discriminator.matches(type))
|
601
|
-
return ::Quark.mdk_protocol.Close.new()
|
602
|
-
end
|
603
|
-
return ::DatawireQuarkCore.cast(nil) { ::Quark.mdk_protocol.ProtocolEvent }
|
604
|
-
|
605
|
-
nil
|
606
|
-
end
|
607
|
-
|
608
|
-
def dispatch(handler)
|
609
|
-
raise NotImplementedError, '`ProtocolEvent.dispatch` is an abstract method'
|
610
|
-
|
611
|
-
nil
|
612
|
-
end
|
613
|
-
|
614
|
-
def _getClass()
|
615
|
-
|
616
|
-
return "mdk_protocol.ProtocolEvent"
|
617
|
-
|
618
|
-
nil
|
619
|
-
end
|
620
|
-
|
621
|
-
def _getField(name)
|
622
|
-
|
623
|
-
return nil
|
624
|
-
|
625
|
-
nil
|
626
|
-
end
|
627
|
-
|
628
|
-
def _setField(name, value)
|
629
|
-
|
630
|
-
nil
|
631
|
-
|
632
|
-
nil
|
633
|
-
end
|
634
|
-
|
635
|
-
def __init_fields__()
|
636
|
-
|
637
|
-
super
|
638
|
-
|
639
|
-
nil
|
640
|
-
end
|
641
|
-
|
642
|
-
|
643
|
-
end
|
644
|
-
ProtocolEvent.unlazy_statics
|
645
|
-
|
646
463
|
def self.Open; Open; end
|
647
|
-
|
464
|
+
##
|
465
|
+
# A message sent whenever a new connection is opened, by both sides.
|
466
|
+
|
467
|
+
class Open < ::Quark.mdk_protocol.Serializable
|
648
468
|
attr_accessor :version, :properties
|
649
469
|
extend ::DatawireQuarkCore::Static
|
650
470
|
|
651
|
-
static
|
471
|
+
static _json_type: -> { "open" }
|
652
472
|
static mdk_protocol_Open_ref: -> { nil }
|
653
473
|
|
654
474
|
|
@@ -663,13 +483,6 @@ class Open < ::Quark.mdk_protocol.ProtocolEvent
|
|
663
483
|
|
664
484
|
|
665
485
|
|
666
|
-
def dispatch(handler)
|
667
|
-
|
668
|
-
handler.onOpen(self)
|
669
|
-
|
670
|
-
nil
|
671
|
-
end
|
672
|
-
|
673
486
|
def _getClass()
|
674
487
|
|
675
488
|
return "mdk_protocol.Open"
|
@@ -679,8 +492,8 @@ class Open < ::Quark.mdk_protocol.ProtocolEvent
|
|
679
492
|
|
680
493
|
def _getField(name)
|
681
494
|
|
682
|
-
if ((name) == ("
|
683
|
-
return ::Quark.mdk_protocol.Open.
|
495
|
+
if ((name) == ("_json_type"))
|
496
|
+
return ::Quark.mdk_protocol.Open._json_type
|
684
497
|
end
|
685
498
|
if ((name) == ("version"))
|
686
499
|
return (self).version
|
@@ -695,8 +508,8 @@ class Open < ::Quark.mdk_protocol.ProtocolEvent
|
|
695
508
|
|
696
509
|
def _setField(name, value)
|
697
510
|
|
698
|
-
if ((name) == ("
|
699
|
-
::Quark.mdk_protocol.Open.
|
511
|
+
if ((name) == ("_json_type"))
|
512
|
+
::Quark.mdk_protocol.Open._json_type = ::DatawireQuarkCore.cast(value) { ::String }
|
700
513
|
end
|
701
514
|
if ((name) == ("version"))
|
702
515
|
(self).version = ::DatawireQuarkCore.cast(value) { ::String }
|
@@ -804,11 +617,11 @@ def self.Close; Close; end
|
|
804
617
|
##
|
805
618
|
# Close the event stream.
|
806
619
|
|
807
|
-
class Close < ::Quark.mdk_protocol.
|
620
|
+
class Close < ::Quark.mdk_protocol.Serializable
|
808
621
|
attr_accessor :error
|
809
622
|
extend ::DatawireQuarkCore::Static
|
810
623
|
|
811
|
-
static
|
624
|
+
static _json_type: -> { "close" }
|
812
625
|
static mdk_protocol_Close_ref: -> { nil }
|
813
626
|
|
814
627
|
|
@@ -823,13 +636,6 @@ class Close < ::Quark.mdk_protocol.ProtocolEvent
|
|
823
636
|
|
824
637
|
|
825
638
|
|
826
|
-
def dispatch(handler)
|
827
|
-
|
828
|
-
handler.onClose(self)
|
829
|
-
|
830
|
-
nil
|
831
|
-
end
|
832
|
-
|
833
639
|
def _getClass()
|
834
640
|
|
835
641
|
return "mdk_protocol.Close"
|
@@ -839,8 +645,8 @@ class Close < ::Quark.mdk_protocol.ProtocolEvent
|
|
839
645
|
|
840
646
|
def _getField(name)
|
841
647
|
|
842
|
-
if ((name) == ("
|
843
|
-
return ::Quark.mdk_protocol.Close.
|
648
|
+
if ((name) == ("_json_type"))
|
649
|
+
return ::Quark.mdk_protocol.Close._json_type
|
844
650
|
end
|
845
651
|
if ((name) == ("error"))
|
846
652
|
return (self).error
|
@@ -852,8 +658,8 @@ class Close < ::Quark.mdk_protocol.ProtocolEvent
|
|
852
658
|
|
853
659
|
def _setField(name, value)
|
854
660
|
|
855
|
-
if ((name) == ("
|
856
|
-
::Quark.mdk_protocol.Close.
|
661
|
+
if ((name) == ("_json_type"))
|
662
|
+
::Quark.mdk_protocol.Close._json_type = ::DatawireQuarkCore.cast(value) { ::String }
|
857
663
|
end
|
858
664
|
if ((name) == ("error"))
|
859
665
|
(self).error = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_protocol.ProtocolError }
|
@@ -874,25 +680,19 @@ class Close < ::Quark.mdk_protocol.ProtocolEvent
|
|
874
680
|
end
|
875
681
|
Close.unlazy_statics
|
876
682
|
|
877
|
-
def self.
|
683
|
+
def self.Pump; Pump; end
|
878
684
|
##
|
879
|
-
#
|
685
|
+
# Sent to a subscriber every once in a while, to tell subscribers they can send data.
|
880
686
|
|
881
|
-
class
|
882
|
-
attr_accessor :logger, :firstDelay, :maxDelay, :reconnectDelay, :ttl, :tick, :sock, :sockUrl, :lastConnectAttempt, :lastHeartbeat, :timeService, :schedulingActor, :websockets, :dispatcher
|
687
|
+
class Pump < ::DatawireQuarkCore::QuarkObject
|
883
688
|
extend ::DatawireQuarkCore::Static
|
884
689
|
|
885
|
-
static
|
690
|
+
static mdk_protocol_Pump_ref: -> { nil }
|
886
691
|
|
887
692
|
|
888
693
|
|
889
|
-
def initialize(
|
890
|
-
|
694
|
+
def initialize()
|
891
695
|
self.__init_fields__
|
892
|
-
(self).dispatcher = (runtime).dispatcher
|
893
|
-
(self).timeService = runtime.getTimeService()
|
894
|
-
(self).schedulingActor = runtime.getScheduleService()
|
895
|
-
(self).websockets = runtime.getWebSocketsService()
|
896
696
|
|
897
697
|
nil
|
898
698
|
end
|
@@ -900,207 +700,671 @@ class WSClient < ::DatawireQuarkCore::QuarkObject
|
|
900
700
|
|
901
701
|
|
902
702
|
|
903
|
-
def
|
904
|
-
|
703
|
+
def _getClass()
|
704
|
+
|
705
|
+
return "mdk_protocol.Pump"
|
905
706
|
|
906
707
|
nil
|
907
708
|
end
|
908
709
|
|
909
|
-
def
|
910
|
-
|
710
|
+
def _getField(name)
|
711
|
+
|
712
|
+
return nil
|
911
713
|
|
912
714
|
nil
|
913
715
|
end
|
914
716
|
|
915
|
-
def
|
916
|
-
|
717
|
+
def _setField(name, value)
|
718
|
+
|
719
|
+
nil
|
917
720
|
|
918
721
|
nil
|
919
722
|
end
|
920
723
|
|
921
|
-
def
|
724
|
+
def __init_fields__()
|
922
725
|
|
923
|
-
return (@sock) != (nil)
|
924
726
|
|
925
727
|
nil
|
926
728
|
end
|
927
729
|
|
928
|
-
|
730
|
+
|
731
|
+
end
|
732
|
+
Pump.unlazy_statics
|
733
|
+
|
734
|
+
def self.WSConnected; WSConnected; end
|
735
|
+
##
|
736
|
+
# Sent to a subscriber when connection happens.
|
737
|
+
|
738
|
+
class WSConnected < ::DatawireQuarkCore::QuarkObject
|
739
|
+
attr_accessor :websock
|
740
|
+
extend ::DatawireQuarkCore::Static
|
741
|
+
|
742
|
+
static mdk_protocol_WSConnected_ref: -> { nil }
|
743
|
+
|
744
|
+
|
745
|
+
|
746
|
+
def initialize(websock)
|
929
747
|
|
930
|
-
|
748
|
+
self.__init_fields__
|
749
|
+
(self).websock = websock
|
931
750
|
|
932
751
|
nil
|
933
752
|
end
|
934
753
|
|
935
|
-
|
754
|
+
|
755
|
+
|
756
|
+
|
757
|
+
def _getClass()
|
936
758
|
|
937
|
-
|
759
|
+
return "mdk_protocol.WSConnected"
|
938
760
|
|
939
761
|
nil
|
940
762
|
end
|
941
763
|
|
942
|
-
def
|
764
|
+
def _getField(name)
|
943
765
|
|
944
|
-
|
766
|
+
if ((name) == ("websock"))
|
767
|
+
return (self).websock
|
768
|
+
end
|
769
|
+
return nil
|
945
770
|
|
946
771
|
nil
|
947
772
|
end
|
948
773
|
|
949
|
-
def
|
774
|
+
def _setField(name, value)
|
950
775
|
|
951
|
-
|
952
|
-
|
953
|
-
@reconnectDelay = @maxDelay
|
776
|
+
if ((name) == ("websock"))
|
777
|
+
(self).websock = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.Actor }
|
954
778
|
end
|
955
|
-
@logger.info((("backing off, reconnecting in ") + ((@reconnectDelay).to_s)) + (" seconds"))
|
956
779
|
|
957
780
|
nil
|
958
781
|
end
|
959
782
|
|
960
|
-
def
|
783
|
+
def __init_fields__()
|
961
784
|
|
962
|
-
|
963
|
-
if (((close).error) == (nil))
|
964
|
-
@reconnectDelay = @firstDelay
|
965
|
-
else
|
966
|
-
self.doBackoff()
|
967
|
-
end
|
785
|
+
self.websock = nil
|
968
786
|
|
969
787
|
nil
|
970
788
|
end
|
971
789
|
|
972
|
-
|
790
|
+
|
791
|
+
end
|
792
|
+
WSConnected.unlazy_statics
|
793
|
+
|
794
|
+
def self.DecodedMessage; DecodedMessage; end
|
795
|
+
##
|
796
|
+
# Sent to a subscriber when a message is received.
|
797
|
+
|
798
|
+
class DecodedMessage < ::DatawireQuarkCore::QuarkObject
|
799
|
+
attr_accessor :message
|
800
|
+
extend ::DatawireQuarkCore::Static
|
801
|
+
|
802
|
+
static mdk_protocol_DecodedMessage_ref: -> { nil }
|
803
|
+
|
804
|
+
|
805
|
+
|
806
|
+
def initialize(message)
|
973
807
|
|
974
|
-
self.
|
808
|
+
self.__init_fields__
|
809
|
+
(self).message = message
|
975
810
|
|
976
811
|
nil
|
977
812
|
end
|
978
813
|
|
979
|
-
|
814
|
+
|
815
|
+
|
816
|
+
|
817
|
+
def _getClass()
|
980
818
|
|
981
|
-
|
982
|
-
self.shutdown()
|
983
|
-
(self).dispatcher.tell(self, ::Quark.mdk_runtime.WSClose.new(), @sock)
|
984
|
-
@sock = ::DatawireQuarkCore.cast(nil) { ::Quark.mdk_runtime.WSActor }
|
985
|
-
end
|
819
|
+
return "mdk_protocol.DecodedMessage"
|
986
820
|
|
987
821
|
nil
|
988
822
|
end
|
989
823
|
|
990
|
-
def
|
824
|
+
def _getField(name)
|
991
825
|
|
992
|
-
|
993
|
-
|
994
|
-
self.onScheduledEvent()
|
995
|
-
return
|
826
|
+
if ((name) == ("message"))
|
827
|
+
return (self).message
|
996
828
|
end
|
997
|
-
|
998
|
-
|
999
|
-
|
829
|
+
return nil
|
830
|
+
|
831
|
+
nil
|
832
|
+
end
|
833
|
+
|
834
|
+
def _setField(name, value)
|
835
|
+
|
836
|
+
if ((name) == ("message"))
|
837
|
+
(self).message = value
|
1000
838
|
end
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
839
|
+
|
840
|
+
nil
|
841
|
+
end
|
842
|
+
|
843
|
+
def __init_fields__()
|
844
|
+
|
845
|
+
self.message = nil
|
846
|
+
|
847
|
+
nil
|
848
|
+
end
|
849
|
+
|
850
|
+
|
851
|
+
end
|
852
|
+
DecodedMessage.unlazy_statics
|
853
|
+
|
854
|
+
def self.WSClientSubscriber; WSClientSubscriber; end
|
855
|
+
##
|
856
|
+
# Higher-level interface for subscribers, to be utilized with _subscriberDispatch.
|
857
|
+
|
858
|
+
class WSClientSubscriber < ::DatawireQuarkCore::QuarkObject
|
859
|
+
extend ::DatawireQuarkCore::Static
|
860
|
+
|
861
|
+
static mdk_protocol_WSClientSubscriber_ref: -> { nil }
|
862
|
+
|
863
|
+
|
864
|
+
|
865
|
+
def initialize()
|
866
|
+
self.__init_fields__
|
867
|
+
|
868
|
+
nil
|
869
|
+
end
|
870
|
+
|
871
|
+
|
872
|
+
|
873
|
+
|
874
|
+
##
|
875
|
+
# Handle an incoming decoded JSON message received from the server.
|
876
|
+
|
877
|
+
def onMessageFromServer(message)
|
878
|
+
raise NotImplementedError, '`WSClientSubscriber.onMessageFromServer` is an abstract method'
|
879
|
+
|
880
|
+
nil
|
881
|
+
end
|
882
|
+
|
883
|
+
##
|
884
|
+
# Called with WebSocket actor when the WSClient connects to the server.
|
885
|
+
|
886
|
+
def onWSConnected(websocket)
|
887
|
+
raise NotImplementedError, '`WSClientSubscriber.onWSConnected` is an abstract method'
|
888
|
+
|
889
|
+
nil
|
890
|
+
end
|
891
|
+
|
892
|
+
##
|
893
|
+
# Called when the WSClient notifies the subscriber it can send data.
|
894
|
+
|
895
|
+
def onPump()
|
896
|
+
raise NotImplementedError, '`WSClientSubscriber.onPump` is an abstract method'
|
897
|
+
|
898
|
+
nil
|
899
|
+
end
|
900
|
+
|
901
|
+
def __init_fields__()
|
902
|
+
|
903
|
+
|
904
|
+
nil
|
905
|
+
end
|
906
|
+
|
907
|
+
|
908
|
+
end
|
909
|
+
WSClientSubscriber.unlazy_statics
|
910
|
+
|
911
|
+
##
|
912
|
+
# Dispatch actor messages to a WSClientSubscriber.
|
913
|
+
#
|
914
|
+
# Call this in onMessage to handle DecodedMessage, WSConnected and Pump messages
|
915
|
+
# from the WSClient.
|
916
|
+
#
|
917
|
+
|
918
|
+
def self._subscriberDispatch(subscriber, message)
|
919
|
+
|
920
|
+
klass = (::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id
|
921
|
+
if ((klass) == ("mdk_protocol.WSConnected"))
|
922
|
+
connected = ::DatawireQuarkCore.cast(message) { ::Quark.mdk_protocol.WSConnected }
|
923
|
+
subscriber.onWSConnected((connected).websock)
|
924
|
+
return
|
925
|
+
end
|
926
|
+
if ((klass) == ("mdk_protocol.Pump"))
|
927
|
+
subscriber.onPump()
|
928
|
+
return
|
929
|
+
end
|
930
|
+
if ((klass) == ("mdk_protocol.DecodedMessage"))
|
931
|
+
decoded = ::DatawireQuarkCore.cast(message) { ::Quark.mdk_protocol.DecodedMessage }
|
932
|
+
subscriber.onMessageFromServer((decoded).message)
|
933
|
+
return
|
934
|
+
end
|
935
|
+
|
936
|
+
|
937
|
+
nil
|
938
|
+
end
|
939
|
+
|
940
|
+
def self.OpenCloseSubscriber; OpenCloseSubscriber; end
|
941
|
+
##
|
942
|
+
# Handle Open and Close messages.
|
943
|
+
|
944
|
+
class OpenCloseSubscriber < ::DatawireQuarkCore::QuarkObject
|
945
|
+
attr_accessor :_dispatcher, :_wsclient
|
946
|
+
extend ::DatawireQuarkCore::Static
|
947
|
+
|
948
|
+
static mdk_protocol_OpenCloseSubscriber_ref: -> { nil }
|
949
|
+
|
950
|
+
|
951
|
+
|
952
|
+
def initialize(client)
|
953
|
+
|
954
|
+
self.__init_fields__
|
955
|
+
(self)._wsclient = client
|
956
|
+
(self)._wsclient.subscribe(self)
|
957
|
+
|
958
|
+
nil
|
959
|
+
end
|
960
|
+
|
961
|
+
|
962
|
+
|
963
|
+
|
964
|
+
def onStart(dispatcher)
|
965
|
+
|
966
|
+
(self)._dispatcher = dispatcher
|
967
|
+
|
968
|
+
nil
|
969
|
+
end
|
970
|
+
|
971
|
+
def onMessage(origin, message)
|
972
|
+
|
973
|
+
::Quark.mdk_protocol._subscriberDispatch(self, message)
|
974
|
+
|
975
|
+
nil
|
976
|
+
end
|
977
|
+
|
978
|
+
def onStop()
|
979
|
+
|
980
|
+
nil
|
981
|
+
|
982
|
+
nil
|
983
|
+
end
|
984
|
+
|
985
|
+
def onMessageFromServer(message)
|
986
|
+
|
987
|
+
type = (::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id
|
988
|
+
if ((type) == ("mdk_protocol.Open"))
|
989
|
+
self.onOpen()
|
990
|
+
return
|
991
|
+
end
|
992
|
+
if ((type) == ("mdk_protocol.Close"))
|
993
|
+
close = ::DatawireQuarkCore.cast(message) { ::Quark.mdk_protocol.Close }
|
994
|
+
self.onClose(close)
|
1004
995
|
return
|
1005
996
|
end
|
1006
997
|
|
1007
998
|
nil
|
1008
999
|
end
|
1009
1000
|
|
1010
|
-
def
|
1001
|
+
def onWSConnected(websocket)
|
1011
1002
|
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1003
|
+
(self)._dispatcher.tell(self, ::Quark.mdk_protocol.Open.new().encode(), websocket)
|
1004
|
+
|
1005
|
+
nil
|
1006
|
+
end
|
1007
|
+
|
1008
|
+
def onPump()
|
1009
|
+
|
1010
|
+
nil
|
1011
|
+
|
1012
|
+
nil
|
1013
|
+
end
|
1014
|
+
|
1015
|
+
def onOpen()
|
1016
|
+
|
1017
|
+
nil
|
1018
|
+
|
1019
|
+
nil
|
1020
|
+
end
|
1021
|
+
|
1022
|
+
def onClose(close)
|
1023
|
+
|
1024
|
+
(self)._wsclient.onClose(((close).error) != (nil))
|
1025
|
+
|
1026
|
+
nil
|
1027
|
+
end
|
1028
|
+
|
1029
|
+
def _getClass()
|
1030
|
+
|
1031
|
+
return "mdk_protocol.OpenCloseSubscriber"
|
1032
|
+
|
1033
|
+
nil
|
1034
|
+
end
|
1035
|
+
|
1036
|
+
def _getField(name)
|
1037
|
+
|
1038
|
+
if ((name) == ("_dispatcher"))
|
1039
|
+
return (self)._dispatcher
|
1026
1040
|
end
|
1027
|
-
if (
|
1028
|
-
self.
|
1041
|
+
if ((name) == ("_wsclient"))
|
1042
|
+
return (self)._wsclient
|
1029
1043
|
end
|
1044
|
+
return nil
|
1030
1045
|
|
1031
1046
|
nil
|
1032
1047
|
end
|
1033
1048
|
|
1034
|
-
def
|
1049
|
+
def _setField(name, value)
|
1035
1050
|
|
1036
|
-
|
1037
|
-
|
1051
|
+
if ((name) == ("_dispatcher"))
|
1052
|
+
(self)._dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
|
1053
|
+
end
|
1054
|
+
if ((name) == ("_wsclient"))
|
1055
|
+
(self)._wsclient = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_protocol.WSClient }
|
1056
|
+
end
|
1038
1057
|
|
1039
1058
|
nil
|
1040
1059
|
end
|
1041
1060
|
|
1042
|
-
def
|
1061
|
+
def __init_fields__()
|
1043
1062
|
|
1044
|
-
self.
|
1045
|
-
|
1063
|
+
self._dispatcher = nil
|
1064
|
+
self._wsclient = nil
|
1046
1065
|
|
1047
1066
|
nil
|
1048
1067
|
end
|
1049
1068
|
|
1050
|
-
|
1069
|
+
|
1070
|
+
end
|
1071
|
+
OpenCloseSubscriber.unlazy_statics
|
1072
|
+
|
1073
|
+
def self.JSONParser; JSONParser; end
|
1074
|
+
##
|
1075
|
+
# Convert JSON-encoded strings into objects.
|
1076
|
+
|
1077
|
+
class JSONParser < ::DatawireQuarkCore::QuarkObject
|
1078
|
+
attr_accessor :_typeToClass
|
1079
|
+
extend ::DatawireQuarkCore::Static
|
1080
|
+
|
1081
|
+
static mdk_protocol_JSONParser_ref: -> { nil }
|
1082
|
+
|
1083
|
+
|
1084
|
+
|
1085
|
+
def initialize()
|
1086
|
+
self.__init_fields__
|
1087
|
+
|
1088
|
+
nil
|
1089
|
+
end
|
1090
|
+
|
1091
|
+
|
1092
|
+
|
1093
|
+
|
1094
|
+
##
|
1095
|
+
# Register a type field and the corresponding class.
|
1096
|
+
|
1097
|
+
def register(type, cls)
|
1051
1098
|
|
1052
|
-
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1099
|
+
((self)._typeToClass)[type] = (cls)
|
1100
|
+
|
1101
|
+
nil
|
1102
|
+
end
|
1103
|
+
|
1104
|
+
##
|
1105
|
+
# Decode a String into an Object.
|
1106
|
+
|
1107
|
+
def decode(message)
|
1108
|
+
|
1109
|
+
json = ::DatawireQuarkCore::JSONObject.parse(message)
|
1110
|
+
cls = ((self)._typeToClass)[json.getObjectItem("type").getString()]
|
1111
|
+
if ((cls) == (nil))
|
1112
|
+
return nil
|
1056
1113
|
end
|
1057
|
-
|
1058
|
-
|
1114
|
+
instance = cls.construct(::DatawireQuarkCore::List.new([]))
|
1115
|
+
::Quark.quark.fromJSON(cls, instance, json)
|
1116
|
+
return instance
|
1059
1117
|
|
1060
1118
|
nil
|
1061
1119
|
end
|
1062
1120
|
|
1063
|
-
def
|
1121
|
+
def _getClass()
|
1122
|
+
|
1123
|
+
return "mdk_protocol.JSONParser"
|
1124
|
+
|
1125
|
+
nil
|
1126
|
+
end
|
1127
|
+
|
1128
|
+
def _getField(name)
|
1064
1129
|
|
1130
|
+
if ((name) == ("_typeToClass"))
|
1131
|
+
return (self)._typeToClass
|
1132
|
+
end
|
1133
|
+
return nil
|
1134
|
+
|
1065
1135
|
nil
|
1136
|
+
end
|
1137
|
+
|
1138
|
+
def _setField(name, value)
|
1139
|
+
|
1140
|
+
if ((name) == ("_typeToClass"))
|
1141
|
+
(self)._typeToClass = ::DatawireQuarkCore.cast(value) { ::Hash }
|
1142
|
+
end
|
1066
1143
|
|
1067
1144
|
nil
|
1068
1145
|
end
|
1069
1146
|
|
1070
|
-
def
|
1147
|
+
def __init_fields__()
|
1148
|
+
|
1149
|
+
self._typeToClass = {}
|
1150
|
+
|
1151
|
+
nil
|
1152
|
+
end
|
1153
|
+
|
1154
|
+
|
1155
|
+
end
|
1156
|
+
JSONParser.unlazy_statics
|
1157
|
+
|
1158
|
+
def self.WSClient; WSClient; end
|
1159
|
+
##
|
1160
|
+
# Common protocol machinery for web socket based protocol clients.
|
1161
|
+
|
1162
|
+
class WSClient < ::DatawireQuarkCore::QuarkObject
|
1163
|
+
attr_accessor :logger, :firstDelay, :maxDelay, :reconnectDelay, :ttl, :tick, :sock, :lastConnectAttempt, :timeService, :schedulingActor, :websockets, :dispatcher, :url, :token, :subscribers, :_started, :_parser
|
1164
|
+
extend ::DatawireQuarkCore::Static
|
1165
|
+
|
1166
|
+
static quark_List_mdk_runtime_actors_Actor__ref: -> { nil }
|
1167
|
+
static mdk_protocol_WSClient_ref: -> { nil }
|
1168
|
+
|
1169
|
+
|
1170
|
+
|
1171
|
+
def initialize(runtime, parser, url, token)
|
1172
|
+
|
1173
|
+
self.__init_fields__
|
1174
|
+
(self).dispatcher = (runtime).dispatcher
|
1175
|
+
(self).timeService = runtime.getTimeService()
|
1176
|
+
(self).schedulingActor = runtime.getScheduleService()
|
1177
|
+
(self).websockets = runtime.getWebSocketsService()
|
1178
|
+
(self).url = url
|
1179
|
+
(self).token = token
|
1180
|
+
(self)._parser = parser
|
1181
|
+
|
1182
|
+
nil
|
1183
|
+
end
|
1184
|
+
|
1185
|
+
|
1186
|
+
|
1187
|
+
|
1188
|
+
##
|
1189
|
+
# Subscribe to messages from the server.
|
1190
|
+
#
|
1191
|
+
# Do this before starting the WSClient.
|
1192
|
+
#
|
1193
|
+
# The given Actor subscribes to WSConnected, all WSMessage received by the
|
1194
|
+
# WSClient, as well as a periodic Pump message.
|
1195
|
+
#
|
1196
|
+
|
1197
|
+
def subscribe(subscriber)
|
1198
|
+
|
1199
|
+
((self).subscribers) << (subscriber)
|
1200
|
+
|
1201
|
+
nil
|
1202
|
+
end
|
1203
|
+
|
1204
|
+
def isStarted()
|
1205
|
+
|
1206
|
+
return @_started
|
1207
|
+
|
1208
|
+
nil
|
1209
|
+
end
|
1210
|
+
|
1211
|
+
def isConnected()
|
1212
|
+
|
1213
|
+
return (@sock) != (nil)
|
1214
|
+
|
1215
|
+
nil
|
1216
|
+
end
|
1217
|
+
|
1218
|
+
def schedule(time)
|
1219
|
+
|
1220
|
+
(self).dispatcher.tell(self, ::Quark.mdk_runtime.Schedule.new("wakeup", time), (self).schedulingActor)
|
1221
|
+
|
1222
|
+
nil
|
1223
|
+
end
|
1224
|
+
|
1225
|
+
def scheduleReconnect()
|
1226
|
+
|
1227
|
+
self.schedule(@reconnectDelay)
|
1228
|
+
|
1229
|
+
nil
|
1230
|
+
end
|
1231
|
+
|
1232
|
+
##
|
1233
|
+
# Called when the connection is closed via message by the server.
|
1234
|
+
|
1235
|
+
def onClose(error)
|
1071
1236
|
|
1237
|
+
@logger.info("close!")
|
1238
|
+
if (error)
|
1239
|
+
self.doBackoff()
|
1240
|
+
else
|
1241
|
+
@reconnectDelay = @firstDelay
|
1242
|
+
end
|
1243
|
+
|
1072
1244
|
nil
|
1245
|
+
end
|
1246
|
+
|
1247
|
+
def doBackoff()
|
1248
|
+
|
1249
|
+
@reconnectDelay = (2.0) * (@reconnectDelay)
|
1250
|
+
if ((@reconnectDelay) > (@maxDelay))
|
1251
|
+
@reconnectDelay = @maxDelay
|
1252
|
+
end
|
1253
|
+
@logger.info((("backing off, reconnecting in ") + ((@reconnectDelay).to_s)) + (" seconds"))
|
1073
1254
|
|
1074
1255
|
nil
|
1075
1256
|
end
|
1076
1257
|
|
1077
|
-
def
|
1258
|
+
def onStart(dispatcher)
|
1078
1259
|
|
1260
|
+
(self)._started = true
|
1261
|
+
self.schedule(0.0)
|
1262
|
+
|
1079
1263
|
nil
|
1264
|
+
end
|
1265
|
+
|
1266
|
+
def onStop()
|
1267
|
+
|
1268
|
+
(self)._started = false
|
1269
|
+
if (self.isConnected())
|
1270
|
+
(self).dispatcher.tell(self, ::Quark.mdk_runtime.WSClose.new(), @sock)
|
1271
|
+
@sock = ::DatawireQuarkCore.cast(nil) { ::Quark.mdk_runtime.WSActor }
|
1272
|
+
end
|
1080
1273
|
|
1081
1274
|
nil
|
1082
1275
|
end
|
1083
1276
|
|
1084
|
-
def
|
1277
|
+
def onMessage(origin, message)
|
1278
|
+
|
1279
|
+
typeId = (::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id
|
1280
|
+
if ((typeId) == ("mdk_runtime.Happening"))
|
1281
|
+
self.onScheduledEvent()
|
1282
|
+
return
|
1283
|
+
end
|
1284
|
+
if ((typeId) == ("mdk_runtime.WSClosed"))
|
1285
|
+
self.onWSClosed()
|
1286
|
+
return
|
1287
|
+
end
|
1288
|
+
if ((typeId) == ("mdk_runtime.WSMessage"))
|
1289
|
+
wsmessage = ::DatawireQuarkCore.cast(message) { ::Quark.mdk_runtime.WSMessage }
|
1290
|
+
parsed = (self)._parser.decode((wsmessage).body)
|
1291
|
+
if ((parsed) == (nil))
|
1292
|
+
return
|
1293
|
+
end
|
1294
|
+
decoded = ::Quark.mdk_protocol.DecodedMessage.new(parsed)
|
1295
|
+
idx = 0
|
1296
|
+
while ((idx) < (((self).subscribers).size)) do
|
1297
|
+
(self).dispatcher.tell(self, decoded, ((self).subscribers)[idx])
|
1298
|
+
idx = (idx) + (1)
|
1299
|
+
end
|
1300
|
+
return
|
1301
|
+
end
|
1302
|
+
|
1303
|
+
nil
|
1304
|
+
end
|
1305
|
+
|
1306
|
+
def onScheduledEvent()
|
1085
1307
|
|
1308
|
+
rightNow = (((self).timeService.time()) * (1000.0)).round()
|
1309
|
+
reconnectInterval = ((@reconnectDelay) * (1000.0)).round()
|
1310
|
+
if (self.isConnected())
|
1311
|
+
if (self.isStarted())
|
1312
|
+
self.pump()
|
1313
|
+
end
|
1314
|
+
else
|
1315
|
+
if ((self.isStarted()) && (((rightNow) - (@lastConnectAttempt)) >= (reconnectInterval)))
|
1316
|
+
self.doOpen()
|
1317
|
+
end
|
1318
|
+
end
|
1319
|
+
if (self.isStarted())
|
1320
|
+
self.schedule(@tick)
|
1321
|
+
end
|
1322
|
+
|
1086
1323
|
nil
|
1324
|
+
end
|
1325
|
+
|
1326
|
+
def doOpen()
|
1327
|
+
|
1328
|
+
@lastConnectAttempt = (((self).timeService.time()) * (1000.0)).round()
|
1329
|
+
sockUrl = @url
|
1330
|
+
if ((@token) != (nil))
|
1331
|
+
sockUrl = ((sockUrl) + ("?token=")) + (@token)
|
1332
|
+
end
|
1333
|
+
@logger.info(("opening ") + (@url))
|
1334
|
+
(self).websockets.connect(sockUrl, self).andEither(::Quark.quark._BoundMethod.new(self, "onWSConnected", ::DatawireQuarkCore::List.new([])), ::Quark.quark._BoundMethod.new(self, "onWSError", ::DatawireQuarkCore::List.new([])))
|
1087
1335
|
|
1088
1336
|
nil
|
1089
1337
|
end
|
1090
1338
|
|
1091
|
-
def
|
1339
|
+
def startup()
|
1092
1340
|
|
1341
|
+
message = ::Quark.mdk_protocol.WSConnected.new((self).sock)
|
1342
|
+
idx = 0
|
1343
|
+
while ((idx) < ((@subscribers).size)) do
|
1344
|
+
(self).dispatcher.tell(self, message, (@subscribers)[idx])
|
1345
|
+
idx = (idx) + (1)
|
1346
|
+
end
|
1347
|
+
|
1093
1348
|
nil
|
1349
|
+
end
|
1350
|
+
|
1351
|
+
def pump()
|
1352
|
+
|
1353
|
+
message = ::Quark.mdk_protocol.Pump.new()
|
1354
|
+
idx = 0
|
1355
|
+
while ((idx) < ((@subscribers).size)) do
|
1356
|
+
(self).dispatcher.tell(self, message, (@subscribers)[idx])
|
1357
|
+
idx = (idx) + (1)
|
1358
|
+
end
|
1094
1359
|
|
1095
1360
|
nil
|
1096
1361
|
end
|
1097
1362
|
|
1098
1363
|
def onWSConnected(socket)
|
1099
1364
|
|
1100
|
-
@logger.info(((("connected to ") + (@
|
1365
|
+
@logger.info(((("connected to ") + (@url)) + (" via ")) + ((socket).to_s))
|
1101
1366
|
@reconnectDelay = @firstDelay
|
1102
1367
|
@sock = socket
|
1103
|
-
(self).dispatcher.tell(self, ::Quark.mdk_protocol.Open.new().encode(), @sock)
|
1104
1368
|
self.startup()
|
1105
1369
|
self.pump()
|
1106
1370
|
|
@@ -1117,7 +1381,7 @@ class WSClient < ::DatawireQuarkCore::QuarkObject
|
|
1117
1381
|
|
1118
1382
|
def onWSClosed()
|
1119
1383
|
|
1120
|
-
@logger.info(("closed ") + (@
|
1384
|
+
@logger.info(("closed ") + (@url))
|
1121
1385
|
@sock = ::DatawireQuarkCore.cast(nil) { ::Quark.mdk_runtime.WSActor }
|
1122
1386
|
|
1123
1387
|
nil
|
@@ -1153,15 +1417,9 @@ class WSClient < ::DatawireQuarkCore::QuarkObject
|
|
1153
1417
|
if ((name) == ("sock"))
|
1154
1418
|
return (self).sock
|
1155
1419
|
end
|
1156
|
-
if ((name) == ("sockUrl"))
|
1157
|
-
return (self).sockUrl
|
1158
|
-
end
|
1159
1420
|
if ((name) == ("lastConnectAttempt"))
|
1160
1421
|
return (self).lastConnectAttempt
|
1161
1422
|
end
|
1162
|
-
if ((name) == ("lastHeartbeat"))
|
1163
|
-
return (self).lastHeartbeat
|
1164
|
-
end
|
1165
1423
|
if ((name) == ("timeService"))
|
1166
1424
|
return (self).timeService
|
1167
1425
|
end
|
@@ -1174,6 +1432,21 @@ class WSClient < ::DatawireQuarkCore::QuarkObject
|
|
1174
1432
|
if ((name) == ("dispatcher"))
|
1175
1433
|
return (self).dispatcher
|
1176
1434
|
end
|
1435
|
+
if ((name) == ("url"))
|
1436
|
+
return (self).url
|
1437
|
+
end
|
1438
|
+
if ((name) == ("token"))
|
1439
|
+
return (self).token
|
1440
|
+
end
|
1441
|
+
if ((name) == ("subscribers"))
|
1442
|
+
return (self).subscribers
|
1443
|
+
end
|
1444
|
+
if ((name) == ("_started"))
|
1445
|
+
return (self)._started
|
1446
|
+
end
|
1447
|
+
if ((name) == ("_parser"))
|
1448
|
+
return (self)._parser
|
1449
|
+
end
|
1177
1450
|
return nil
|
1178
1451
|
|
1179
1452
|
nil
|
@@ -1202,15 +1475,9 @@ class WSClient < ::DatawireQuarkCore::QuarkObject
|
|
1202
1475
|
if ((name) == ("sock"))
|
1203
1476
|
(self).sock = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.WSActor }
|
1204
1477
|
end
|
1205
|
-
if ((name) == ("sockUrl"))
|
1206
|
-
(self).sockUrl = ::DatawireQuarkCore.cast(value) { ::String }
|
1207
|
-
end
|
1208
1478
|
if ((name) == ("lastConnectAttempt"))
|
1209
1479
|
(self).lastConnectAttempt = ::DatawireQuarkCore.cast(value) { ::Integer }
|
1210
1480
|
end
|
1211
|
-
if ((name) == ("lastHeartbeat"))
|
1212
|
-
(self).lastHeartbeat = ::DatawireQuarkCore.cast(value) { ::Integer }
|
1213
|
-
end
|
1214
1481
|
if ((name) == ("timeService"))
|
1215
1482
|
(self).timeService = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.Time }
|
1216
1483
|
end
|
@@ -1223,6 +1490,21 @@ class WSClient < ::DatawireQuarkCore::QuarkObject
|
|
1223
1490
|
if ((name) == ("dispatcher"))
|
1224
1491
|
(self).dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
|
1225
1492
|
end
|
1493
|
+
if ((name) == ("url"))
|
1494
|
+
(self).url = ::DatawireQuarkCore.cast(value) { ::String }
|
1495
|
+
end
|
1496
|
+
if ((name) == ("token"))
|
1497
|
+
(self).token = ::DatawireQuarkCore.cast(value) { ::String }
|
1498
|
+
end
|
1499
|
+
if ((name) == ("subscribers"))
|
1500
|
+
(self).subscribers = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List }
|
1501
|
+
end
|
1502
|
+
if ((name) == ("_started"))
|
1503
|
+
(self)._started = ::DatawireQuarkCore.cast(value) { ::Object }
|
1504
|
+
end
|
1505
|
+
if ((name) == ("_parser"))
|
1506
|
+
(self)._parser = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_protocol.JSONParser }
|
1507
|
+
end
|
1226
1508
|
|
1227
1509
|
nil
|
1228
1510
|
end
|
@@ -1236,13 +1518,16 @@ class WSClient < ::DatawireQuarkCore::QuarkObject
|
|
1236
1518
|
self.ttl = 30.0
|
1237
1519
|
self.tick = 1.0
|
1238
1520
|
self.sock = nil
|
1239
|
-
self.sockUrl = nil
|
1240
1521
|
self.lastConnectAttempt = 0
|
1241
|
-
self.lastHeartbeat = 0
|
1242
1522
|
self.timeService = nil
|
1243
1523
|
self.schedulingActor = nil
|
1244
1524
|
self.websockets = nil
|
1245
1525
|
self.dispatcher = nil
|
1526
|
+
self.url = nil
|
1527
|
+
self.token = nil
|
1528
|
+
self.subscribers = ::DatawireQuarkCore::List.new([])
|
1529
|
+
self._started = false
|
1530
|
+
self._parser = nil
|
1246
1531
|
|
1247
1532
|
nil
|
1248
1533
|
end
|