[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
specifying protocol for service
Date: Thu, 19 Apr 90 17:24:36 EST
From: bouma@cs.purdue.edu
When you call the function 'invoke-service-on-host' is there any way to
specify the protocol for it to use? When I run that function on a host that
is not in the namespace, I get thrown into the debugger. It does not know
that that host supports that service. However, the first option in the
debugger, s-A, asks to try the service anyway with some protocol the local
machine knows about. I would like to give it the protocol I want to use
and have it skip looking at the namespace. I should get into the debugger
only if it fails to get a connection. Please tell me how this can be done.
I think this will work:
(defun invoke-service-on-host-if-possible (service host &rest service-args)
(flet ((try-protocol (condition)
(dbg:initialize-special-commands condition) ; Set up paths
(when (send condition :possible-paths)
(dbg:special-command condition :specify-path))))
(condition-bind ((neti:host-does-not-support-service #'try-protocol))
(apply #'net:invoke-service-on-host service host service-args))))
This will do exactly what s-A would do if you typed it, including querying
you if there is more than one possibility. You can use RPLACD on the list
of possible paths if you always want the first one, or write a method for
the condition HOST-DOES-NOT-SUPPORT-SERVICE to update the instance variable
POSSIBLE-PATHS (which is not writable or settable) if you want to automate
things further. See the method for DBG:SPECIAL-COMMAND on that condition
flavor for more information.