ui/src/rpcvbt/VBTProvider.i3


Copyright (C) 1994, Digital Equipment Corp.
<*PRAGMA LL*>
Cross-address space filter VBTs.

A cross-address space VBT is a filter in which the parent and child are in different address spaces. The filter has no effect except to transport events between the address spaces. For example, the ivy text editor can use cross-address space VBTs to manage text subwindows of applications in other address spaces.

The child side of a cross address space filter applies ToRemote to its provider, and passes the resulting Remote to the parent address space as a network object. The parent side passes the Remote to FromRemote to obtain the parent side of the provider.

INTERFACE VBTProvider;

IMPORT VBT;

EXCEPTION Error(TEXT);

TYPE
  T = OBJECT METHODS apply(TEXT): VBT.T RAISES {Error};
  Remote <: ROOT;
  (* A "Remote" is an pure object type that can be passed or exported
     as a network object. *)

  (* The locking level of an apply method is VBT.mu.  The VBT.mu's for
     the different address spaces are ordered so that

      parent space VBT.mu < child space VBT.mu .

   Clients must avoid using cross-address space filters in a way that
   would produce a cycle in this order.  *)

PROCEDURE ToRemote(provider: T): Remote;

PROCEDURE FromRemote(r: Remote): T RAISES {Error};

END VBTProvider.