anchor.diff:             (raise-system-exception 'CORBA:OBJECT_NOT_EXIST 0 :completed_no)))))
   
   
  +(defmacro deletef (object place &rest keys &environment env)
  +  (multiple-value-bind (vars vals store-vars writer-form reader-form)
  +      (get-setf-expansion place env)
  +    (if (cdr store-vars) (error "Can't expand this"))
  +    `(let* (,@(mapcar #'list vars vals)
  +            (,(car store-vars) ,reader-form))
  +       (setf ,(car store-vars)
  +             (delete ,object ,(car store-vars) ,@keys))
  +       ,writer-form)))
   
   (defun poa-invoke (poa request)
     (let ((oid (request-object-id request))
           (operation (request-operation request))
           (buffer (request-input request)))
  -    (handler-case
  -      (multiple-value-bind (servant postinvoke)
  -                           (get-servant poa oid operation)
  -        (let ((*poa-current* (make-poa-current poa oid servant)))
  -          (setf (request-state request) :exec)
  -          (unwind-protect
  -            (servant-invoke servant operation buffer request)
  -            (when postinvoke (funcall postinvoke)))))
  -      (PortableServer:ForwardRequest (exception)
  -       (set-request-forward request (op:forward_reference exception)))
  -      (CORBA:UserException ()
  -       (raise-system-exception 'CORBA:UNKNOWN)))
  -    (server-request-respond request)))
  +    (push request (executing-requests poa))
  +    (setf (request-state request) :exec)
  +    (unwind-protect
  +      (progn
  +        (handler-case
  +          (multiple-value-bind (servant postinvoke)
  +                               (get-servant poa oid operation)
  +            (let ((*poa-current* (make-poa-current poa oid servant)))
  +              (unwind-protect
  +                (servant-invoke servant operation buffer request)
  +                (when postinvoke (funcall postinvoke)))))
  +          (PortableServer:ForwardRequest (exception)
  +                                         (set-request-forward request (op:forward_reference exception)))
  +          (CORBA:UserException ()
  +                               (raise-system-exception 'CORBA:UNKNOWN)))
  +        (server-request-respond request))
  +      (deletef request (executing-requests poa)))))
  +      
   
   
   (defun poa-locate (poa poa-spec &optional (check-poa-status t))
  
positive.code:           (life-state :initform nil :accessor life-state
                        :documentation "Living, destroy in progress or destroyed")
            (etherealize-complete :initform nil :accessor etherealize-complete)
            (queue :initform nil :accessor poa-request-queue)))
  
  (defmethod print-object ((p portableserver:poa) stream)
    (print-unreadable-object (p stream :type t)
  
negative.code: ;;;; clorb-poa.lisp -- Portable Object Adaptor
  ;; $Id: clorb-poa.lisp,v 1.39 2005/02/25 19:33:41 lenst Exp $
  
  (in-package :clorb)
  
  