Module: dfmc-application Synopsis: The implementation of the <PROCESS> class, and related protocols. Author: Paul Howard Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: Functional Objects Library Public License Version 1.0 Dual-license: GNU Lesser General Public License Warranty: Distributed WITHOUT WARRANTY OF ANY KIND ///// <DEBUG-PROCESS> // The concrete implementation for <PROCESS>. Couldn't think of a // better name. The corresponding runtime-manager class is // <REMOTE-PROCESS>. define class <debug-process> (<process>) constant slot process-implementation-descriptor :: <remote-process>, required-init-keyword: descriptor:; end class; ///// DO-PROCESSES-ON-MACHINE (Environment Procotols) // This method applies to any <connected-machine>, whether it is // local or remote. define method do-processes-on-machine (machine :: <connected-machine>, itr :: <function>) => () do-processes (method (p :: <remote-process>) => () let env-process = element(machine.process-mappings, p, default: #f); unless (env-process) let filename = as(<file-locator>, p.remote-process-name); env-process := make(<debug-process>, process-host-machine: machine, process-executable-file: filename, process-id: p.remote-process-system-identifier, process-debuggable?: #t, descriptor: p); machine.process-mappings[p] := env-process; end unless; itr(env-process); end method, machine.machine-debug-connection); end method; ///// ATTACH-LIVE-APPLICATION (Environment Protocols) // Our method just shares implementation with RUN-APPLICATION. define method attach-live-application (application :: <dfmc-application>, process :: <debug-process>, #key client, system-data) => (app :: <dfmc-application>) ignore(client); run-application (application, process: process, system-data: system-data, machine: process.process-host-machine) end method;