::nsmcp::Tool ::nsmcp::Tool describe execute init jsonArguments name permission validate ::nx::Object ::nx::Object ::nsmcp::Tool->::nx::Object ::nsmcp::RequestRoutingTool ::nsmcp::RequestRoutingTool contextSupported encodeSnapshot execute mapped snapshot ::nsmcp::RequestRoutingTool->::nsmcp::Tool

Class ::nsmcp::RequestRoutingTool

::nsmcp::RequestRoutingTool[i] create ... \
           [ -adminExample (default "") ] \
           [ -adminSummary (default "") ] \
           [ -description (default "Inspect effective connection-pool mappings and registered filters for the authenticated server. Runtime ns_server data, not configuration guesses. Filter registrations include authentication, request processing and other purposes; names do not establish behavior. Does not execute filters or read implementation files.") ] \
           [ -inputSchema (default " { "type": "object", "properties": {}, "additionalProperties": false } ") ] \
           [ -name (default "server_request_routing") ] \
           [ -outputSchema (default "") ] \
           [ -permission (default "diagnostics.runtime.read") ] \
           [ -redactor:required redactor:required ]

Defined in /usr/local/ns/tcl/nsmcp/traffic-tools.tcl

Class Relations

  • class: ::nx::Class[i]
  • superclass: ::nsmcp::Tool[i]
::nx::Class create ::nsmcp::RequestRoutingTool \
     -superclass ::nsmcp::Tool

Methods (to be applied on instances)

  • contextSupported (scripted, public)

     <instance of nsmcp::RequestRoutingTool[i]> contextSupported server
    Parameters:
    server (required)

    Testcases:
    No testcase defined.
    set context [ns_set create]
    try {
        return [expr {![catch {ns_server -server $server mapped -context $context {GET /}}]}]
    } finally {
        ns_set free $context
    }
  • encodeSnapshot (scripted, public)

     <instance of nsmcp::RequestRoutingTool[i]> encodeSnapshot snapshot
    Parameters:
    snapshot (required)

    Testcases:
    No testcase defined.
    set pools {}; dict for {pool maps} [dict get $snapshot pools] {
        set rows {}; set i 0
        foreach row $maps {lappend rows $i string [${:redactor} message $row]; incr i}
        lappend pools $pool array $rows
    }
    set filters {}; set i 0
    foreach row [dict get $snapshot filters] {lappend filters $i string [${:redactor} message $row]; incr i}
    set errors {}; dict for {key value} [dict get $snapshot availability] {lappend errors $key string $value}
    return [list mappings object $pools filters array $filters availability object $errors]
  • execute (scripted, public)

     <instance of nsmcp::RequestRoutingTool[i]> execute context \
        arguments
    Parameters:
    context (required)
    arguments (required)

    Testcases:
    No testcase defined.
    set server [$context server]
    return [list {} object [list server string $server observedAt number [clock seconds]  source string ns_server nativeContextLookup boolean [:contextSupported $server] {*}[:encodeSnapshot [:snapshot $server]]]]
  • mapped (scripted, public)

     <instance of nsmcp::RequestRoutingTool[i]> mapped server record
    Parameters:
    server (required)
    record (required)

    Testcases:
    No testcase defined.
    set context [ns_set create]
    try {
        if {[dict exists $record userAgent]} {
            ns_set put $context user-agent [dict get $record userAgent]
        }
        set peer [dict get $record peerAddress]
        if {[ns_ip valid $peer]} {
            ns_set put $context x-ns-ip $peer
        }
        set pool [ns_server -server $server mapped -context $context  [list [dict get $record method] [dict get $record path]]]
        return [expr {$pool eq "" ? "default" : $pool}]
    } finally {
        ns_set free $context
    }
  • snapshot (scripted, public)

     <instance of nsmcp::RequestRoutingTool[i]> snapshot server
    Parameters:
    server (required)

    Testcases:
    No testcase defined.
    set pools {}; set filters {}; set errors {}
    if {[catch {ns_server -server $server pools} names]} {
        dict set errors pools unavailable
    } else {
        foreach pool $names {
            if {[catch {ns_server -server $server -pool $pool map} maps]} {
                dict set errors $pool unavailable
            } else {dict set pools [expr {$pool eq "" ? "default" : $pool}] $maps}
        }
    }
    if {[catch {ns_server -server $server filters} filters]} {
        set filters {}; dict set errors filters unavailable
    }
    return [dict create pools $pools filters $filters availability $errors]