anchor.diff:  (defun setup-ec ()
     (unless *my-ch*
       (setq *my-ch* (make-instance 'event-channel)))
  -  (rebind *my-ch* "ch1")
  -  ;;(rebind *my-pus* "ch1b")
  -  (rebind (make-instance 'push-consumer :channel *my-ch*) "ch1pc")
  -  (rebind (make-instance 'push-supplier :channel *my-ch*) "ch1ps"))
  +  (clorb:rebind *my-ch* "ch1")
  +  ;;(clorb:rebind *my-pus* "ch1b")
  +  (clorb:rebind (make-instance 'push-consumer :channel *my-ch*) "ch1pc")
  +  (clorb:rebind (make-instance 'push-supplier :channel *my-ch*) "ch1ps"))
   
   (defun test-ec ()
     (let ((consumer (make-instance 'push-trace))
  -        (ch (resolve "ch1")))
  -    (let ((in-adm (invoke ch "for_suppliers"))
  -          (out-adm (invoke ch "for_consumers")))
  -      (let ((in (invoke in-adm "obtain_push_consumer"))
  -            (out (invoke out-adm "obtain_push_supplier")))
  -        ;; ? (invoke in "connect_push_supplier" ?)
  -        (invoke out "connect_push_consumer" consumer)
  -        (invoke in "push" "Tjolla hoppsan")
  -        (invoke in "push" 345)
  -        (invoke in "push" '("how" "do"))
  -        (invoke out "disconnect_push_supplier")))))
  +        (ch (op:resolve "ch1")))
  +    (let ((in-adm (op:for_suppliers ch))
  +          (out-adm (op:for_consumers ch)))
  +      (let ((in (op:obtain_push_consumer in-adm))
  +            (out (op:obtain_push_supplier out-adm)))
  +        (op:connect_push_consumer out consumer)
  +        (op:push in "Tjolla hoppsan")
  +        (op:push in 345)
  +        (op:push in '("how" "do"))
  +        (op:disconnect_push_supplier out)))))
   
   (defun test-ec-1 ()
  -  (let ((ch (resolve "ch1")))
  -    (let ((in-adm (invoke ch "for_suppliers")))
  -      (let ((in (invoke in-adm "obtain_push_consumer")))
  -        ;; ? (invoke in "connect_push_supplier" ?)
  -        (invoke in "push" "Tjolla hoppsan")
  -        (invoke in "push" 345)
  -        (invoke in "push" '("how" "do"))
  -        ))))
  +  (let ((ch (op:resolve "ch1")))
  +    (let ((in-adm (op:for_suppliers ch)))
  +      (let ((in (op:obtain_push_consumer in-adm)))
  +        ;; ? (op:connect_push_supplier in ?)
  +        (op:push in "Tjolla hoppsan")
  +        (op:push in 345)
  +        (op:push in '("how" "do")) ))))
   
   (defun test-ec-2 ()
     (let ((consumer (make-instance 'push-trace))
  -        (ch (resolve "ch1")))
  -    (let ((out-adm (invoke ch "for_consumers")))
  -      (let ((out (invoke out-adm "obtain_push_supplier")))
  -        (invoke out "connect_push_consumer" consumer)
  +        (ch (op:resolve "ch1")))
  +    (let ((out-adm (op:for_consumers ch)))
  +      (let ((out (op:obtain_push_supplier out-adm)))
  +        (op:connect_push_consumer out consumer)
           (unwind-protect
                (op:run (corba:orb_init))
  -          (invoke out "disconnect_push_supplier"))))))
  +          (op:disconnect_push_supplier out))))))
  
positive.code: 
  (defclass CONSUMER ()
    ((state :initarg :channel :accessor channel)
     (supplier :accessor supplier)))
  
  (defmethod connect-supplier ((self consumer) supplier)
    (when (slot-boundp self 'supplier)
      (error 'userexception :id +already-connected-id+))
    (push self (suppliers (channel self)))
    (setf (supplier self) supplier))
  
  (defmethod disconnect ((self consumer))
    (slot-makunbound self 'supplier)
    (deletef (suppliers (channel self)) self)
    (when *poa-current*
      (op:deactivate_object (poa-current-POA *poa-current*)
                         (poa-current-object-id *poa-current*))))
  
  
  ;;;; ------------------------------------------------- push-consumer -------
  
  (defclass PUSH-CONSUMER (consumer push-consumer-servant)
    ())
  
  (define-method push ((self push-consumer) any)
  
negative.code: ;;;  ------------------------------------------------- event-channel -------
  
  (defclass EVENT-CHANNEL (CosEventChannelAdmin:EventChannel-servant)
    ((consumers           :initform '()   :accessor consumers-of)
     (suppliers           :initform '()   :accessor suppliers-of)
     (consumer-admin  )
     (supplier-admin  )))
  
  (define-method for_consumers ((servant event-channel))
    (with-cache-slot (servant consumer-admin)
      (make-instance 'consumer-admin :channel servant)))
  
  (define-method for_suppliers ((servant event-channel))
    (with-cache-slot (servant supplier-admin)
      (make-instance 'supplier-admin :channel servant)))
  
  (define-method destroy ((servant event-channel))
    (values))
  
  
  (defgeneric add-event (recipient event))
  
  (defmethod add-event ((ch event-channel) event)
    (mapc (lambda (subs) (add-event subs event))
          (consumers-of ch)))
  
  
  
  