Class ::nsshell::KernelThreadHandler (public)

 ::nx::Class ::nsshell::KernelThreadHandler[i]

Defined in /usr/local/ns/tcl/nsshell/shell.tcl

Testcases:
No testcase defined.
Source code:
        :property {supported:1..n {eval dropKernel}}

        :property {kernel ""}
        :variable kernels ""

        :method init {} {
            #
            # Create a thread named "kernels" for handling the cmds
            #
            THREAD create kernels -cmd [subst {
                ns_log notice "Kernel thread [self] is running"
            }]
        }

        :public method useKernel {name} {
            #
            # Create or use the named kernel. If the kernel does not
            # exist, create it new by creating an slave interpreter.
            #
            if {$name ni ${:kernels} && $name ne ""} {
                ns_log notice "Kernel thread creates kernel (= interp) '$name'"
                kernels do [list interp create $name]
                # autoload nx, should be generalized
                kernels do [list interp eval $name {
                    package require nx
                }]
                lappend :kernels $name
            }
        }

        :public method dropKernel {name} {
            #
            # Delete a kernel in memory. This method actually deletes
            # the interpreter used for the kernel.
            #
            if {$name in ${:kernels} && $name ne ""} {
                ns_log notice "dropKernel: drop kernel '$name'"
                #
                # Delete interpreter
                #
                kernels do [list interp delete $name]
                #
                # Remove name from the kernels list
                #
                set posn [lsearch -exact ${:kernels} $name]
                set list [lreplace ${:kernels} $posn $posn]
            } else {
                ns_log notice "dropKernel: No kernel named '$name' defined."
            }
        }

        :public method eval {arg kernel channel} {
            #
            # Evaluate the command provided by "$arg" in the
            # specified kernel.
            #
            debug "[current class] eval <$arg> <$kernel>"
            :useKernel $kernel
            if {$kernel ne ""} {
                set cmd [list interp eval $kernel $arg]
            } else {
                set cmd $arg
            }
            debug "[current class] executes <kernels do $cmd>"
            try {
                set info [list status ok result [kernels do $cmd]]
            } on error {errorMsg} {
                ns_log warning "nsshell: kernel eval returned error <$errorMsg$::errorInfo"
                set info [list status error result $errorMsg]
            }
            return $info
        }
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: