datawire_mdk 2.0.22 → 2.0.23

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-10-24 14:33:24.783025
1
+ # Quark 1.0.452 run at 2016-10-26 12:53:21.596699
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk; Mdk; end
@@ -10,6 +10,7 @@ require_relative 'mdk_discovery' # 0 () ()
10
10
  require_relative 'quark' # 0 () ()
11
11
  require_relative 'mdk_protocol' # 0 () ()
12
12
  require_relative 'mdk_tracing' # 0 () ()
13
+ require_relative 'mdk_metrics' # 0 () ()
13
14
  require_relative 'quark/concurrent' # 0 ('quark',) ()
14
15
  require_relative 'mdk_introspection' # 0 () ()
15
16
  require_relative 'mdk_discovery/protocol' # 0 ('mdk_discovery',) ()
@@ -549,7 +550,7 @@ Session.unlazy_statics
549
550
 
550
551
  def self.MDKImpl; MDKImpl; end
551
552
  class MDKImpl < ::DatawireQuarkCore::QuarkObject
552
- attr_accessor :logger, :_reflection_hack, :_runtime, :_wsclient, :_openclose, :_disco, :_discoSource, :_tracer, :procUUID, :_running, :_defaultTimeout
553
+ attr_accessor :logger, :_reflection_hack, :_runtime, :_wsclient, :_openclose, :_disco, :_discoSource, :_tracer, :_metrics, :procUUID, :_running, :_defaultTimeout
553
554
  extend ::DatawireQuarkCore::Static
554
555
 
555
556
  static mdk_MDKImpl_ref: -> { nil }
@@ -566,10 +567,13 @@ class MDKImpl < ::DatawireQuarkCore::QuarkObject
566
567
  if (!((runtime).dependencies.hasService("failurepolicy_factory")))
567
568
  (runtime).dependencies.registerService("failurepolicy_factory", self.getFailurePolicy(runtime))
568
569
  end
570
+ if ((runtime).dependencies.hasService("tracer"))
571
+ @_tracer = ::DatawireQuarkCore.cast((@_runtime).dependencies.getService("tracer")) { ::Quark.mdk_tracing.Tracer }
572
+ end
569
573
  @_disco = ::Quark.mdk_discovery.Discovery.new(runtime)
570
574
  @_wsclient = self.getWSClient(runtime)
571
575
  if ((@_wsclient) != (nil))
572
- @_openclose = ::Quark.mdk_protocol.OpenCloseSubscriber.new(@_wsclient)
576
+ @_openclose = ::Quark.mdk_protocol.OpenCloseSubscriber.new(@_wsclient, @procUUID)
573
577
  end
574
578
  env = runtime.getEnvVarsService()
575
579
  discoFactory = self.getDiscoveryFactory(env)
@@ -578,8 +582,10 @@ class MDKImpl < ::DatawireQuarkCore::QuarkObject
578
582
  (runtime).dependencies.registerService("discovery_registrar", @_discoSource)
579
583
  end
580
584
  if ((@_wsclient) != (nil))
581
- @_tracer = ::Quark.mdk_tracing.Tracer.new(runtime, @_wsclient)
582
- @_tracer.initContext()
585
+ if ((@_tracer) == (nil))
586
+ @_tracer = ::Quark.mdk_tracing.Tracer.new(runtime, @_wsclient)
587
+ end
588
+ @_metrics = ::Quark.mdk_metrics.MetricsClient.new(@_wsclient)
583
589
  end
584
590
 
585
591
  nil
@@ -668,6 +674,7 @@ class MDKImpl < ::DatawireQuarkCore::QuarkObject
668
674
  (@_runtime).dispatcher.startActor(@_wsclient)
669
675
  (@_runtime).dispatcher.startActor(@_openclose)
670
676
  (@_runtime).dispatcher.startActor(@_tracer)
677
+ (@_runtime).dispatcher.startActor(@_metrics)
671
678
  end
672
679
  (@_runtime).dispatcher.startActor(@_disco)
673
680
  (@_runtime).dispatcher.startActor(@_discoSource)
@@ -788,6 +795,9 @@ class MDKImpl < ::DatawireQuarkCore::QuarkObject
788
795
  if ((name) == ("_tracer"))
789
796
  return (self)._tracer
790
797
  end
798
+ if ((name) == ("_metrics"))
799
+ return (self)._metrics
800
+ end
791
801
  if ((name) == ("procUUID"))
792
802
  return (self).procUUID
793
803
  end
@@ -828,6 +838,9 @@ class MDKImpl < ::DatawireQuarkCore::QuarkObject
828
838
  if ((name) == ("_tracer"))
829
839
  (self)._tracer = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_tracing.Tracer }
830
840
  end
841
+ if ((name) == ("_metrics"))
842
+ (self)._metrics = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_metrics.MetricsClient }
843
+ end
831
844
  if ((name) == ("procUUID"))
832
845
  (self).procUUID = ::DatawireQuarkCore.cast(value) { ::String }
833
846
  end
@@ -851,6 +864,7 @@ class MDKImpl < ::DatawireQuarkCore::QuarkObject
851
864
  self._disco = nil
852
865
  self._discoSource = nil
853
866
  self._tracer = nil
867
+ self._metrics = nil
854
868
  self.procUUID = ::Quark.quark.concurrent.Context.runtime().uuid()
855
869
  self._running = false
856
870
  self._defaultTimeout = nil
@@ -919,7 +933,7 @@ TLSInit.unlazy_statics
919
933
 
920
934
  def self.SessionImpl; SessionImpl; end
921
935
  class SessionImpl < ::DatawireQuarkCore::QuarkObject
922
- attr_accessor :_mdk, :_resolved, :_context, :_experimental
936
+ attr_accessor :_mdk, :_resolved, :_interactionReports, :_context, :_experimental
923
937
  extend ::DatawireQuarkCore::Static
924
938
 
925
939
  static _levels: -> { {"CRITICAL" => 0, "ERROR" => 1, "WARN" => 2, "INFO" => 3, "DEBUG" => 4} }
@@ -927,6 +941,7 @@ class SessionImpl < ::DatawireQuarkCore::QuarkObject
927
941
  static mdk_SessionImpl_ref: -> { nil }
928
942
  static quark_List_quark_List_mdk_discovery_Node___ref: -> { nil }
929
943
  static quark_List_mdk_discovery_Node__ref: -> { nil }
944
+ static quark_List_mdk_metrics_InteractionEvent__ref: -> { nil }
930
945
  static quark_List_quark_Map_quark_String_quark_String___ref: -> { nil }
931
946
  static quark_List_quark_String__ref: -> { nil }
932
947
  static quark_Map_quark_String_quark_int__ref: -> { nil }
@@ -947,6 +962,7 @@ class SessionImpl < ::DatawireQuarkCore::QuarkObject
947
962
  ctx = ::Quark.mdk_protocol.SharedContext.decode(encodedContext)
948
963
  @_context = ctx.start_span()
949
964
  end
965
+ self.start_interaction()
950
966
 
951
967
  nil
952
968
  end
@@ -1064,8 +1080,7 @@ class SessionImpl < ::DatawireQuarkCore::QuarkObject
1064
1080
  return
1065
1081
  end
1066
1082
  ::Quark.mdk.SessionImpl._inLogging.setValue(true)
1067
- (@_mdk)._tracer.setContext(@_context)
1068
- (@_mdk)._tracer.log((@_mdk).procUUID, level, category, text)
1083
+ (@_mdk)._tracer.log(@_context, (@_mdk).procUUID, level, category, text)
1069
1084
  ::Quark.mdk.SessionImpl._inLogging.setValue(false)
1070
1085
  end
1071
1086
 
@@ -1183,6 +1198,11 @@ class SessionImpl < ::DatawireQuarkCore::QuarkObject
1183
1198
 
1184
1199
  def start_interaction()
1185
1200
 
1201
+ interactionReport = ::Quark.mdk_metrics.InteractionEvent.new()
1202
+ (interactionReport).node = (@_mdk).procUUID
1203
+ (interactionReport).timestamp = ((1000.0) * ((@_mdk)._runtime.getTimeService().time())).round()
1204
+ (interactionReport).session = (@_context).traceId
1205
+ (@_interactionReports) << (interactionReport)
1186
1206
  (@_resolved) << (::DatawireQuarkCore::List.new([]))
1187
1207
 
1188
1208
  nil
@@ -1215,6 +1235,7 @@ class SessionImpl < ::DatawireQuarkCore::QuarkObject
1215
1235
  idx = (idx) + (1)
1216
1236
  (involved) << (node.toString())
1217
1237
  node.failure()
1238
+ (@_interactionReports)[((@_interactionReports).size) - (1)].addNode(node, false)
1218
1239
  end
1219
1240
  text = ((("involved: ") + ((involved).join(", "))) + ("\n\n")) + (message)
1220
1241
  self.error("interaction failure", text)
@@ -1226,12 +1247,17 @@ class SessionImpl < ::DatawireQuarkCore::QuarkObject
1226
1247
 
1227
1248
  nodes = self._current_interaction()
1228
1249
  (@_resolved).delete_at(((@_resolved).size) - (1))
1250
+ report = (@_interactionReports).delete_at(((@_interactionReports).size) - (1))
1229
1251
  idx = 0
1230
1252
  while ((idx) < ((nodes).size)) do
1231
1253
  node = (nodes)[idx]
1232
1254
  node.success()
1255
+ report.addNode(node, true)
1233
1256
  idx = (idx) + (1)
1234
1257
  end
1258
+ if (((@_mdk)._metrics) != (nil))
1259
+ (@_mdk)._metrics.sendInteraction(report)
1260
+ end
1235
1261
 
1236
1262
  nil
1237
1263
  end
@@ -1266,6 +1292,9 @@ class SessionImpl < ::DatawireQuarkCore::QuarkObject
1266
1292
  if ((name) == ("_resolved"))
1267
1293
  return (self)._resolved
1268
1294
  end
1295
+ if ((name) == ("_interactionReports"))
1296
+ return (self)._interactionReports
1297
+ end
1269
1298
  if ((name) == ("_context"))
1270
1299
  return (self)._context
1271
1300
  end
@@ -1291,6 +1320,9 @@ class SessionImpl < ::DatawireQuarkCore::QuarkObject
1291
1320
  if ((name) == ("_resolved"))
1292
1321
  (self)._resolved = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List }
1293
1322
  end
1323
+ if ((name) == ("_interactionReports"))
1324
+ (self)._interactionReports = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List }
1325
+ end
1294
1326
  if ((name) == ("_context"))
1295
1327
  (self)._context = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_protocol.SharedContext }
1296
1328
  end
@@ -1304,7 +1336,8 @@ class SessionImpl < ::DatawireQuarkCore::QuarkObject
1304
1336
  def __init_fields__()
1305
1337
 
1306
1338
  self._mdk = nil
1307
- self._resolved = ::DatawireQuarkCore::List.new([::DatawireQuarkCore::List.new([])])
1339
+ self._resolved = ::DatawireQuarkCore::List.new([])
1340
+ self._interactionReports = ::DatawireQuarkCore::List.new([])
1308
1341
  self._context = nil
1309
1342
  self._experimental = false
1310
1343
 
data/lib/mdk_discovery.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Quark 1.0.452 run at 2016-10-24 14:33:24.783025
1
+ # Quark 1.0.452 run at 2016-10-26 12:53:21.596699
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-10-24 14:33:24.783025
1
+ # Quark 1.0.452 run at 2016-10-26 12:53:21.596699
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-10-24 14:33:24.783025
1
+ # Quark 1.0.452 run at 2016-10-26 12:53:21.596699
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-10-24 14:33:24.783025
1
+ # Quark 1.0.452 run at 2016-10-26 12:53:21.596699
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-10-24 14:33:24.783025
1
+ # Quark 1.0.452 run at 2016-10-26 12:53:21.596699
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-10-24 14:33:24.783025
1
+ # Quark 1.0.452 run at 2016-10-26 12:53:21.596699
2
2
  module Quark
3
3
  require "quark"
4
4
  def self.mdk_introspection; MdkIntrospection; end
@@ -0,0 +1,333 @@
1
+ # Quark 1.0.452 run at 2016-10-26 12:53:21.596699
2
+ module Quark
3
+ require "quark"
4
+ def self.mdk_metrics; MdkMetrics; end
5
+ module MdkMetrics
6
+ require "datawire-quark-core"
7
+ require_relative 'quark/reflect' # 0 ('quark',) ()
8
+ require_relative 'mdk_protocol' # 0 () ()
9
+ require_relative 'quark/concurrent' # 0 ('quark',) ()
10
+ require_relative 'mdk_discovery' # 0 () ()
11
+ require_relative 'mdk_runtime/actors' # 0 ('mdk_runtime',) ()
12
+
13
+
14
+ def self.InteractionEvent; InteractionEvent; end
15
+ ##
16
+ # Wire protocol message for reporting interaction results to MCP.
17
+
18
+ class InteractionEvent < ::Quark.mdk_protocol.Serializable
19
+ attr_accessor :timestamp, :uuid, :session, :node, :results
20
+ extend ::DatawireQuarkCore::Static
21
+
22
+ static _json_type: -> { "interaction_event" }
23
+ static mdk_metrics_InteractionEvent_ref: -> { nil }
24
+
25
+
26
+
27
+ def initialize()
28
+
29
+ super()
30
+
31
+ nil
32
+ end
33
+
34
+
35
+
36
+
37
+ def getTimestamp()
38
+
39
+ return (self).timestamp
40
+
41
+ nil
42
+ end
43
+
44
+ ##
45
+ # Add the result of communicating with a specific node.
46
+
47
+ def addNode(destination, success)
48
+
49
+ value = 0
50
+ if (success)
51
+ value = 1
52
+ end
53
+ ((self).results)[::DatawireQuarkCore.cast(((destination).properties)["datawire_nodeId"]) { ::String }] = (value)
54
+
55
+ nil
56
+ end
57
+
58
+ def _getClass()
59
+
60
+ return "mdk_metrics.InteractionEvent"
61
+
62
+ nil
63
+ end
64
+
65
+ def _getField(name)
66
+
67
+ if ((name) == ("_json_type"))
68
+ return ::Quark.mdk_metrics.InteractionEvent._json_type
69
+ end
70
+ if ((name) == ("timestamp"))
71
+ return (self).timestamp
72
+ end
73
+ if ((name) == ("uuid"))
74
+ return (self).uuid
75
+ end
76
+ if ((name) == ("session"))
77
+ return (self).session
78
+ end
79
+ if ((name) == ("node"))
80
+ return (self).node
81
+ end
82
+ if ((name) == ("results"))
83
+ return (self).results
84
+ end
85
+ return nil
86
+
87
+ nil
88
+ end
89
+
90
+ def _setField(name, value)
91
+
92
+ if ((name) == ("_json_type"))
93
+ ::Quark.mdk_metrics.InteractionEvent._json_type = ::DatawireQuarkCore.cast(value) { ::String }
94
+ end
95
+ if ((name) == ("timestamp"))
96
+ (self).timestamp = ::DatawireQuarkCore.cast(value) { ::Integer }
97
+ end
98
+ if ((name) == ("uuid"))
99
+ (self).uuid = ::DatawireQuarkCore.cast(value) { ::String }
100
+ end
101
+ if ((name) == ("session"))
102
+ (self).session = ::DatawireQuarkCore.cast(value) { ::String }
103
+ end
104
+ if ((name) == ("node"))
105
+ (self).node = ::DatawireQuarkCore.cast(value) { ::String }
106
+ end
107
+ if ((name) == ("results"))
108
+ (self).results = ::DatawireQuarkCore.cast(value) { ::Hash }
109
+ end
110
+
111
+ nil
112
+ end
113
+
114
+ def __init_fields__()
115
+
116
+ super
117
+ self.timestamp = nil
118
+ self.uuid = ::Quark.quark.concurrent.Context.runtime().uuid()
119
+ self.session = nil
120
+ self.node = nil
121
+ self.results = {}
122
+
123
+ nil
124
+ end
125
+
126
+
127
+ end
128
+ InteractionEvent.unlazy_statics
129
+
130
+ def self.InteractionAck; InteractionAck; end
131
+ ##
132
+ # Wire protocol message for MCP to acknowledge InteractionEvent receipt.
133
+
134
+ class InteractionAck < ::Quark.mdk_protocol.Serializable
135
+ attr_accessor :sequence
136
+ extend ::DatawireQuarkCore::Static
137
+
138
+ static _json_type: -> { "interaction_ack" }
139
+ static mdk_metrics_InteractionAck_ref: -> { nil }
140
+
141
+
142
+
143
+ def initialize()
144
+
145
+ super()
146
+
147
+ nil
148
+ end
149
+
150
+
151
+
152
+
153
+ def _getClass()
154
+
155
+ return "mdk_metrics.InteractionAck"
156
+
157
+ nil
158
+ end
159
+
160
+ def _getField(name)
161
+
162
+ if ((name) == ("_json_type"))
163
+ return ::Quark.mdk_metrics.InteractionAck._json_type
164
+ end
165
+ if ((name) == ("sequence"))
166
+ return (self).sequence
167
+ end
168
+ return nil
169
+
170
+ nil
171
+ end
172
+
173
+ def _setField(name, value)
174
+
175
+ if ((name) == ("_json_type"))
176
+ ::Quark.mdk_metrics.InteractionAck._json_type = ::DatawireQuarkCore.cast(value) { ::String }
177
+ end
178
+ if ((name) == ("sequence"))
179
+ (self).sequence = ::DatawireQuarkCore.cast(value) { ::Integer }
180
+ end
181
+
182
+ nil
183
+ end
184
+
185
+ def __init_fields__()
186
+
187
+ super
188
+ self.sequence = nil
189
+
190
+ nil
191
+ end
192
+
193
+
194
+ end
195
+ InteractionAck.unlazy_statics
196
+
197
+ def self.MetricsClient; MetricsClient; end
198
+ ##
199
+ # Mini-protocol for sending metrics to MCP.
200
+
201
+ class MetricsClient < ::DatawireQuarkCore::QuarkObject
202
+ attr_accessor :_dispatcher, :_sock, :_sendWithAcks
203
+ extend ::DatawireQuarkCore::Static
204
+
205
+ static mdk_metrics_MetricsClient_ref: -> { nil }
206
+
207
+
208
+
209
+ def initialize(wsclient)
210
+
211
+ self.__init_fields__
212
+ wsclient.subscribe(self)
213
+
214
+ nil
215
+ end
216
+
217
+
218
+
219
+
220
+ ##
221
+ # Queue info about interaction to be sent to the MCP.
222
+
223
+ def sendInteraction(evt)
224
+
225
+ (self)._sendWithAcks.send(::Quark.mdk_metrics.InteractionEvent._json_type, evt)
226
+
227
+ nil
228
+ end
229
+
230
+ def onStart(dispatcher)
231
+
232
+ (self)._dispatcher = dispatcher
233
+
234
+ nil
235
+ end
236
+
237
+ def onStop()
238
+
239
+ nil
240
+
241
+ nil
242
+ end
243
+
244
+ def onMessage(origin, message)
245
+
246
+ ::Quark.mdk_protocol._subscriberDispatch(self, message)
247
+
248
+ nil
249
+ end
250
+
251
+ def onWSConnected(websock)
252
+
253
+ (self)._sock = websock
254
+ (self)._sendWithAcks.onConnected(self, (self)._dispatcher, websock)
255
+
256
+ nil
257
+ end
258
+
259
+ def onPump()
260
+
261
+ (self)._sendWithAcks.onPump(self, (self)._dispatcher, (self)._sock)
262
+
263
+ nil
264
+ end
265
+
266
+ def onMessageFromServer(message)
267
+
268
+ type = (::Quark.quark.reflect.QuarkClass.get(::DatawireQuarkCore._getClass(message))).id
269
+ if ((type) == ("metrics.InteractionAck"))
270
+ ack = ::DatawireQuarkCore.cast(message) { ::Quark.mdk_metrics.InteractionAck }
271
+ (self)._sendWithAcks.onAck((ack).sequence)
272
+ return
273
+ end
274
+
275
+ nil
276
+ end
277
+
278
+ def _getClass()
279
+
280
+ return "mdk_metrics.MetricsClient"
281
+
282
+ nil
283
+ end
284
+
285
+ def _getField(name)
286
+
287
+ if ((name) == ("_dispatcher"))
288
+ return (self)._dispatcher
289
+ end
290
+ if ((name) == ("_sock"))
291
+ return (self)._sock
292
+ end
293
+ if ((name) == ("_sendWithAcks"))
294
+ return (self)._sendWithAcks
295
+ end
296
+ return nil
297
+
298
+ nil
299
+ end
300
+
301
+ def _setField(name, value)
302
+
303
+ if ((name) == ("_dispatcher"))
304
+ (self)._dispatcher = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.MessageDispatcher }
305
+ end
306
+ if ((name) == ("_sock"))
307
+ (self)._sock = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_runtime.actors.Actor }
308
+ end
309
+ if ((name) == ("_sendWithAcks"))
310
+ (self)._sendWithAcks = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_protocol.SendWithAcks }
311
+ end
312
+
313
+ nil
314
+ end
315
+
316
+ def __init_fields__()
317
+
318
+ self._dispatcher = nil
319
+ self._sock = nil
320
+ self._sendWithAcks = ::Quark.mdk_protocol.SendWithAcks.new()
321
+
322
+ nil
323
+ end
324
+
325
+
326
+ end
327
+ MetricsClient.unlazy_statics
328
+
329
+
330
+ require_relative 'datawire_mdk_md' # 0 () ()
331
+
332
+ end # module MdkMetrics
333
+ end # module Quark