1: ================================================================================
  2: 
  3: Smalltalk.KSU defineClass: #ShellProcessManager
  4:     superclass: #{Core.Object}
  5:     indexedType: #none
  6:     private: false
  7:     instanceVariableNames: 'processCollection '
  8:     classInstanceVariableNames: 'defaultManager '
  9:     imports: ''
 10:     category: ''
 11: 
 12: ================================================================================
 13: 
 14: KSU.ShellProcessManager method for 'defaults'
 15: 
 16: defaultInterfaceClass
 17: 
 18:     ^KSU.ShellInterface
 19: 
 20: ------------------------------------------------------------
 21: 
 22: KSU.ShellProcessManager method for 'process management'
 23: 
 24: exit: aPipedProcess
 25: 
 26:     self defaultInterfaceClass new exitProcess: aPipedProcess.
 27:     self processCollection remove: aPipedProcess
 28: 
 29: ------------------------------------------------------------
 30: 
 31: KSU.ShellProcessManager method for 'process management'
 32: 
 33: garbageCollect
 34: 
 35:     | garbageCollection markBlock sweepBlock |
 36:     garbageCollection := OrderedCollection new.
 37:     markBlock :=
 38:             [self processCollection do: 
 39:                     [:aPipedProcess |
 40:                     aPipedProcess allOwners
 41:                         detect: [:anOwner | anOwner class = self defaultInterfaceClass]
 42:                         ifNone: [garbageCollection add: aPipedProcess]]].
 43:     sweepBlock :=
 44:             [garbageCollection do: [:aPipedProcess | self exit: aPipedProcess]].
 45:     markBlock value.
 46:     sweepBlock value
 47: 
 48: ------------------------------------------------------------
 49: 
 50: KSU.ShellProcessManager method for 'accessing'
 51: 
 52: processCollection
 53: 
 54:     processCollection ifNil: [processCollection := OrderedCollection new].
 55:     ^processCollection
 56: 
 57: ------------------------------------------------------------
 58: 
 59: KSU.ShellProcessManager method for 'process management'
 60: 
 61: register: aPipedProcess
 62: 
 63:     self processCollection add: aPipedProcess
 64: 
 65: ================================================================================
 66: 
 67: KSU.ShellProcessManager class
 68:     instanceVariableNames: 'defaultManager '
 69: 
 70: ================================================================================
 71: 
 72: KSU.ShellProcessManager class method for 'accessing'
 73: 
 74: default
 75: 
 76:     defaultManager ifNil: [defaultManager := self new].
 77:     ^defaultManager
 78: 
 79: ------------------------------------------------------------
 80: 
 81: KSU.ShellProcessManager class method for 'process management'
 82: 
 83: exit: aPipedProcess
 84: 
 85:     self default exit: aPipedProcess
 86: 
 87: ------------------------------------------------------------
 88: 
 89: KSU.ShellProcessManager class method for 'process management'
 90: 
 91: garbageCollect
 92: 
 93:     self default garbageCollect
 94: 
 95: ------------------------------------------------------------
 96: 
 97: KSU.ShellProcessManager class method for 'process management'
 98: 
 99: register: aPipedProcess
100: 
101:     self default register: aPipedProcess
102: 
103: ================================================================================

This document was generated by KSU.TextDoclet on 2013/02/22 at 01:01:06.