class Quark::Mdk::SessionImpl
Attributes
_context[RW]
_experimental[RW]
_interactionReports[RW]
_mdk[RW]
_resolved[RW]
Public Class Methods
_level(level)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1187 def self._level(level) if ((::Quark.mdk.SessionImpl._levels).key?(level)) return (::Quark.mdk.SessionImpl._levels)[level] else return 0 end nil end
new(mdk, encodedContext, localEnvironment)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1078 def initialize(mdk, encodedContext, localEnvironment) self.__init_fields__ @_experimental = ((mdk)._runtime.getEnvVarsService().var("MDK_EXPERIMENTAL").orElseGet("")) != ("") @_mdk = mdk encodedContext = ::DatawireQuarkCore.cast(encodedContext) { ::String } if (((encodedContext) == (nil)) || ((encodedContext) == (""))) @_context = ::Quark.mdk_protocol.SharedContext.new() (@_context).environment = localEnvironment else ctx = ::Quark.mdk_protocol.SharedContext.decode(encodedContext) @_context = ctx.start_span() end self._start_interaction() nil end
Public Instance Methods
__init_fields__()
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1478 def __init_fields__() self._mdk = nil self._resolved = ::DatawireQuarkCore::List.new([]) self._interactionReports = ::DatawireQuarkCore::List.new([]) self._context = nil self._experimental = false nil end
_current_interaction()
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1317 def _current_interaction() return (@_resolved)[((@_resolved).size) - (1)] nil end
_enabled(level)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1198 def _enabled(level) ilevel = ::Quark.mdk.SessionImpl._level("INFO") if (self.hasProperty("trace")) ilevel = ::Quark.mdk.SessionImpl._level(::DatawireQuarkCore.cast(self.getProperty("trace")) { ::String }) end return (::Quark.mdk.SessionImpl._level(level)) <= (ilevel) nil end
_getClass()
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1416 def _getClass() return "mdk.SessionImpl" nil end
_getField(name)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1423 def _getField(name) if ((name) == ("_levels")) return ::Quark.mdk.SessionImpl._levels end if ((name) == ("_inLogging")) return ::Quark.mdk.SessionImpl._inLogging end if ((name) == ("_mdk")) return (self)._mdk end if ((name) == ("_resolved")) return (self)._resolved end if ((name) == ("_interactionReports")) return (self)._interactionReports end if ((name) == ("_context")) return (self)._context end if ((name) == ("_experimental")) return (self)._experimental end return nil nil end
_log(level, category, text)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1209 def _log(level, category, text) if (::Quark.mdk.SessionImpl._inLogging.getValue()) return ::DatawireQuarkCore.cast(nil) { ::Quark.mdk.LoggedMessageId } end ::Quark.mdk.SessionImpl._inLogging.setValue(true) evt = ::Quark.mdk_tracing.createLogEvent(@_context, (@_mdk).procUUID, level, category, text) if ((((@_mdk)._tracer) != (nil)) && (self._enabled(level))) (@_mdk)._tracer.log(evt) end ::Quark.mdk.SessionImpl._inLogging.setValue(false) return ::Quark.mdk.LoggedMessageId.new((@_context).traceId, (((evt).context).clock).clocks, ((@_context).environment).name, ((@_context).environment).fallbackName) nil end
_resolve(service, version)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1260 def _resolve(service, version) if (@_experimental) routes = ::DatawireQuarkCore.cast(self.getProperty("routes")) { ::Hash } if (((routes) != (nil)) && ((routes).key?(service))) targets = (routes)[service] idx = 0 while ((idx) < ((targets).size)) do target = (targets)[idx] if (::Quark.mdk_util.versionMatch((target)["version"], version)) service = (target)["target"] version = (target)["targetVersion"] break end idx = (idx) + (1) end end end return (@_mdk)._disco.resolve(service, version, self.getEnvironment()).andThen(::Quark.quark._BoundMethod.new(self, "_resolvedCallback", ::DatawireQuarkCore::List.new([]))) nil end
_resolvedCallback(result)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1309 def _resolvedCallback(result) (self._current_interaction()) << (result) return result nil end
_setField(name, value)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1451 def _setField(name, value) if ((name) == ("_levels")) ::Quark.mdk.SessionImpl._levels = ::DatawireQuarkCore.cast(value) { ::Hash } end if ((name) == ("_inLogging")) ::Quark.mdk.SessionImpl._inLogging = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::TLS } end if ((name) == ("_mdk")) (self)._mdk = ::DatawireQuarkCore.cast(value) { ::Quark.mdk.MDKImpl } end if ((name) == ("_resolved")) (self)._resolved = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List } end if ((name) == ("_interactionReports")) (self)._interactionReports = ::DatawireQuarkCore.cast(value) { ::DatawireQuarkCore::List } end if ((name) == ("_context")) (self)._context = ::DatawireQuarkCore.cast(value) { ::Quark.mdk_protocol.SharedContext } end if ((name) == ("_experimental")) (self)._experimental = ::DatawireQuarkCore.cast(value) { ::Object } end nil end
_start_interaction()
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1333 def _start_interaction() interactionReport = ::Quark.mdk_metrics.InteractionEvent.new() (interactionReport).node = (@_mdk).procUUID (interactionReport).startTimestamp = ((1000.0) * ((@_mdk)._runtime.getTimeService().time())).round() (interactionReport).session = (@_context).traceId (interactionReport).environment = (@_context).environment (@_interactionReports) << (interactionReport) (@_resolved) << (::DatawireQuarkCore::List.new([])) return interactionReport nil end
critical(category, text)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1225 def critical(category, text) return self._log("CRITICAL", category, text) nil end
debug(category, text)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1253 def debug(category, text) return self._log("DEBUG", category, text) nil end
error(category, text)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1232 def error(category, text) return self._log("ERROR", category, text) nil end
externalize()
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1354 def externalize() result = @_context.encode() @_context.tick() return result nil end
fail_interaction(message)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1363 def fail_interaction(message) suspects = self._current_interaction() (@_resolved)[((@_resolved).size) - (1)] = (::DatawireQuarkCore::List.new([])) involved = ::DatawireQuarkCore::List.new([]) idx = 0 while ((idx) < ((suspects).size)) do node = (suspects)[idx] idx = (idx) + (1) (involved) << (node.toString()) node.failure() (@_interactionReports)[((@_interactionReports).size) - (1)].addNode(node, false) end text = "no dependent services involved" if (((involved).size) > (0)) text = ("involved: ") + ((involved).join(", ")) end self.error("interaction failure", ((text) + ("\n\n")) + (message)) nil end
finish_interaction()
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1385 def finish_interaction() nodes = self._current_interaction() (@_resolved).delete_at(((@_resolved).size) - (1)) report = (@_interactionReports).delete_at(((@_interactionReports).size) - (1)) (report).endTimestamp = ((1000.0) * ((@_mdk)._runtime.getTimeService().time())).round() lmid = self.info("MDK", "Finished interaction.") (report).endClock = (lmid).causalLevel idx = 0 while ((idx) < ((nodes).size)) do node = (nodes)[idx] node.success() report.addNode(node, true) idx = (idx) + (1) end if (((@_mdk)._metrics) != (nil)) (@_mdk)._metrics.sendInteraction(report) end nil end
getEnvironment()
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1099 def getEnvironment() return ((self)._context).environment nil end
getProperty(property)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1106 def getProperty(property) return ((@_context).properties)[property] nil end
getRemainingTime()
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1148 def getRemainingTime() deadline = ::DatawireQuarkCore.cast(self.getProperty("timeout")) { ::Float } if ((deadline) == (nil)) return ::DatawireQuarkCore.cast(nil) { ::Float } end return (deadline) - ((@_mdk)._runtime.getTimeService().time()) nil end
hasProperty(property)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1120 def hasProperty(property) return ((@_context).properties).key?(property) nil end
info(category, text)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1246 def info(category, text) return self._log("INFO", category, text) nil end
inject()
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1347 def inject() return self.externalize() nil end
interact(cmd)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1407 def interact(cmd) self.start_interaction() (cmd).call(self) self.finish_interaction() nil end
resolve(service, version)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1290 def resolve(service, version) timeout = @_mdk._timeout() session_timeout = self.getRemainingTime() if (((session_timeout) != (nil)) && ((session_timeout) < (timeout))) timeout = session_timeout end return self.resolve_until(service, version, timeout) nil end
resolve_async(service, version)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1283 def resolve_async(service, version) return ::Quark.mdk_util.toNativePromise(self._resolve(service, version)) nil end
resolve_until(service, version, timeout)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1302 def resolve_until(service, version, timeout) return ::DatawireQuarkCore.cast(::Quark.mdk_util.WaitForPromise.wait(self._resolve(service, version), timeout, (((("service ") + (service)) + ("(")) + (version)) + (")"))) { ::Quark.mdk_discovery.Node } nil end
route(service, version, target, targetVersion)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1159 def route(service, version, target, targetVersion) routes = nil if (!(self.hasProperty("routes"))) routes = {} self.setProperty("routes", routes) else routes = ::DatawireQuarkCore.cast(self.getProperty("routes")) { ::Hash } end targets = nil if ((routes).key?(service)) targets = (routes)[service] else targets = ::DatawireQuarkCore::List.new([]) (routes)[service] = (targets) end (targets) << ({"version" => version, "target" => target, "targetVersion" => targetVersion}) nil end
setDeadline(timeout)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1134 def setDeadline(timeout) current = self.getRemainingTime() if ((current) == (nil)) current = timeout end if ((timeout) > (current)) timeout = current end self.setProperty("timeout", ((@_mdk)._runtime.getTimeService().time()) + (timeout)) nil end
setProperty(property, value)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1113 def setProperty(property, value) ((@_context).properties)[property] = (value) nil end
setTimeout(timeout)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1127 def setTimeout(timeout) self.setDeadline(timeout) nil end
start_interaction()
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1324 def start_interaction() interactionReport = self._start_interaction() lmid = self.info("MDK", "Starting interaction.") (interactionReport).startClock = (lmid).causalLevel nil end
trace(level)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1180 def trace(level) self.setProperty("trace", level) nil end
warn(category, text)
click to toggle source
# File output/rb/mdk-2.0/lib/mdk.rb, line 1239 def warn(category, text) return self._log("WARN", category, text) nil end