Ns register proc
Revision as of 22:29, 12 October 2005 by 67.53.128.200 (talk)
Man page: http://aolserver.com/man/4.0/tcl/ns_proc.html
NAME
- ns_register_proc - Register a procedure for a method/URL combination
SYNOPSIS
- ns_register_proc ?-noinherit? method URL myproc ?args?
DESCRIPTION
- ns_register_proc registers the procname to handle
- the specified method/URL combination. When the
- server gets a matching request, it calls procname
- with the connection id and any arguments specified
- here.
- If -noinherit is specified, the requested URL must
- match the specified URL exactly. For example, if
- the URL specified with ns_register_proc is
- /foo/bar, procname will not be called unless the
- requested URL is exactly /foo/bar.
- If -noinherit is not specified, the requested URL
- can match the specified URL or any URL below it.
- For example, if the URL specified with ns_register_proc
- is /foo/bar, procname will be called for
- /foo/bar, /foo/bar/hmm, and any other URL below
- /foo/bar, provided there is not already another
- procedure registered for that exact URL or for an
- URL with a closer match.
- Note that you must use a glob-style matching character
- if you want inheritance for file names. For
- example, if you want /foo/bar to match
- /foo/bar.html, you must use:
ns_register_proc /foo/bar*
- You can register two procedures for any given
- method/URL combination by calling ns_register_proc
- once with the -noinherit flag set and once without
- it. Only one of the procedures will be called for
- any given request, depending on whether the URL was
- an exact match or not. For example:
ns_register_proc -noinherit GET /foo/bar Aproc ns_register_proc GET /foo/bar Bproc ns_register_proc GET /foo/bar/hmm Cproc
- Aproc will be called when the requested URL is
- exactly /foo/bar. Bproc will be called when the
- requested URL is below /foo/bar, provided there is
- not already another procedure registered to be
- called for that exact URL or for an URL with a
- closer match. Cproc (not Bproc) will be called when
- the requested URL is equal to or below
- /foo/bar/hmm. Syntax for the registered procedure
- The conn (connection) argument is optional for procedures
- registered by ns_register_proc if the procedure has
- 0 or 1 arguments (not including conn).
- The following examples show the variations that can
- be used in this case:
ns_register_proc GET /noargs noargs ns_register_proc GET /context context fnord ns_register_proc GET /conncontext conncontext greeblev proc noargs { } { ns_returnnotice 200 "noargs" } ;# noargs proc context { context } { ns_returnnotice 200 "context is $context" } ;# context proc conncontext { conn context } { ns_returnnotice 200 "conncontext is $context" } ;# conncontext
- The conn (connection) argument is required for procedures
- registered by ns_register_proc if the procedure
- has 2 or more arguments (not including
- conn). The conn argument will be filled automatically
- with the connection information. The first
- argument following conn will always take the value
- supplied by ns_register_proc, if there is one, or
- an empty value. All other arguments must supply a
- default value. The following examples show the
- variations that can be used in this case:
ns_register_proc GET /twoargs twoargs fnord ns_register_proc GET /threeargs threeargs fnord fjord ns_register_proc -noinherit GET /foo/bar Aproc ns_register_proc GET /foo/bar Bproc ns_register_proc GET /foo/bar/hmm Cproc
- Aproc will be called when the requested URL is
- exactly /foo/bar. Bproc will be called when the
- requested URL is below /foo/bar, provided there is
- not already another procedure registered to be
- called for that exact URL or for an URL with a
- closer match. Cproc (not Bproc) will be called when
- the requested URL is equal to or below
- /foo/bar/hmm. Syntax for the registered procedure
- The conn (connection) argument is optional for procedures
- registered by ns_register_proc if the procedure
- has 0 or 1 arguments (not including conn).
- The following examples show the variations that can
- be used in this case:
ns_register_proc GET /noargs noargs ns_register_proc GET /context context fnord ns_register_proc GET /conncontext conncontext greeble proc noargs { } { ns_returnnotice 200 "noargs" } ;# noargs proc context { context } { ns_returnnotice 200 "context is $context" } ;# context proc conncontext { conn context } { ns_returnnotice 200 "conncontext is $context" } ;# conncontext
- The conn (connection) argument is required for procedures
- registered by ns_register_proc if the procedure has 2
- or more arguments (not including
- conn). The conn argument will be filled automatically
- with the connection information. The first
- argument following conn will always take the value
- supplied by ns_register_proc, if there is one, or
- an empty value. All other arguments must supply a
- default value. The following examples show the
- variations that can be used in this case:
ns_register_proc GET /twoargs twoargs fnord ns_register_proc GET /threeargs threeargs fnord fjord proc twoargs { conn context { greeble bork } } { # Do stuff... } proc threeargs { conn context {greeble bork } { hoover quark } { # Do stuff... }
- When a GET of /twoargs is requested, the conn argument
- will be filled automatically, the context
- argument will be assigned "fnord" and the greeble
- argument will be assigned the default value "bork".
- When a GET of /threeargs is requested, the conn
- argument will be filled automatically, the context
- argument will be assigned "fnord" and the greeble
- argument will be assigned "fjord", and the hoover
- argument will be assigned the default value
- "quark".