Copyright (C) 1994, Digital Equipment Corp.
by Steve Glassman, Mark Manasse and Greg Nelson
<*PRAGMA LL*> INTERFACEThe export implementation of TrestleConf is a noop. The SRC implementation imports the Argo conference control machinery, if available. You must have set your ARGOSERVER environment variable for this to do anything. If you set ARGOCONFERENCE the application will join the named conference, if it exists; otherwise, the application will join whatever conference is currently active for USERTrestleConf ;
TYPE User <: UserPublic; UserPublic = OBJECT name: TEXT; displayName: TEXT METHODS <* LL = VBT.mu *> register() END;User instantiates the register method; all Users must be registered before use.
TYPE <* LL = VBT.mu *> UserProc = PROCEDURE (user, displayName: TEXT): User;return NIL if the user's display can't be opened; the created User's register method will be called before this procedure returns
<* LL arbitrary; call must return before any other calls on this interface are made. *> PROCEDURE Init(createUser: UserProc); TYPE App <: AppPublic; AppPublic = OBJECT METHODS <* LL = VBT.mu *> (* client-supplied methods *) add(user: User); delete(user: User); suspend(user: User); activate(user: User); (* system supplied methods *) init(user: User); destroy() END; (* App implements the init method; clients should create Apps, and init them. The application is added to the current conference for the user. The destroy method is invoked when the application wants to destroy itself. The remaining calls are to be implemented by the client of this interface; conference control will call add and delete to attach or delete the application from the given user's session, and activate and suspend to say whether the app should be visible or not. The application should be destroyed when it has no active users; invoking destroy causes all users to be deleted from the app. The initial state of an app added to a user is suspended. *) END TrestleConf.