initial checkin
authorClaus Gittinger <cg@exept.de>
Wed, 11 Nov 1998 16:01:21 +0100
changeset 3925 ad8f9616e567
parent 3924 48aee282d627
child 3926 4cc33691696a
initial checkin
Win32Process.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Win32Process.st	Wed Nov 11 16:01:21 1998 +0100
@@ -0,0 +1,193 @@
+Object subclass:#Win32Process
+	instanceVariableNames:'command environment directory inStream outStream errorStream pid
+		exitStatus finishSema'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'OS-Windows'
+!
+
+
+!Win32Process methodsFor:'accessing'!
+
+command
+    "return the value of the instance variable 'command' (automatically generated)"
+
+    ^ command
+
+    "Created: / 10.11.1998 / 21:27:07 / cg"
+!
+
+command:something
+    "set the value of the instance variable 'command' (automatically generated)"
+
+    command := something.
+
+    "Created: / 10.11.1998 / 21:27:07 / cg"
+!
+
+directory
+    "return the value of the instance variable 'directory' (automatically generated)"
+
+    ^ directory
+
+    "Created: / 10.11.1998 / 21:21:52 / cg"
+!
+
+directory:something
+    "set the value of the instance variable 'directory' (automatically generated)"
+
+    directory := something.
+
+    "Created: / 10.11.1998 / 21:21:52 / cg"
+!
+
+environment
+    "return the value of the instance variable 'environment' (automatically generated)"
+
+    ^ environment
+
+    "Created: / 10.11.1998 / 21:26:34 / cg"
+!
+
+environment:something
+    "set the value of the instance variable 'environment' (automatically generated)"
+
+    environment := something.
+
+    "Created: / 10.11.1998 / 21:27:07 / cg"
+!
+
+errorStream
+    "return the value of the instance variable 'errorStream' (automatically generated)"
+
+    ^ errorStream
+
+    "Created: / 10.11.1998 / 21:26:34 / cg"
+!
+
+errorStream:something
+    "set the value of the instance variable 'errorStream' (automatically generated)"
+
+    errorStream := something.
+
+    "Created: / 10.11.1998 / 21:26:34 / cg"
+!
+
+exitStatus
+    "return the value of the instance variable 'exitStatus' (automatically generated)"
+
+    ^ exitStatus
+
+    "Created: / 10.11.1998 / 21:24:55 / cg"
+!
+
+exitStatus:something
+    "set the value of the instance variable 'exitStatus' (automatically generated)"
+
+    exitStatus := something.
+
+    "Created: / 10.11.1998 / 21:24:55 / cg"
+!
+
+finishSema
+    "return the value of the instance variable 'finishSema' (automatically generated)"
+
+    ^ finishSema
+
+    "Created: / 10.11.1998 / 21:21:53 / cg"
+!
+
+finishSema:something
+    "set the value of the instance variable 'finishSema' (automatically generated)"
+
+    finishSema := something.
+
+    "Created: / 10.11.1998 / 21:21:53 / cg"
+!
+
+inStream
+    "return the value of the instance variable 'inStream' (automatically generated)"
+
+    ^ inStream
+
+    "Created: / 10.11.1998 / 21:26:34 / cg"
+!
+
+inStream:something
+    "set the value of the instance variable 'inStream' (automatically generated)"
+
+    inStream := something.
+
+    "Created: / 10.11.1998 / 21:26:34 / cg"
+!
+
+outStream
+    "return the value of the instance variable 'outStream' (automatically generated)"
+
+    ^ outStream
+
+    "Created: / 10.11.1998 / 21:26:34 / cg"
+!
+
+outStream:something
+    "set the value of the instance variable 'outStream' (automatically generated)"
+
+    outStream := something.
+
+    "Created: / 10.11.1998 / 21:26:34 / cg"
+!
+
+pid
+    "return the value of the instance variable 'pid' (automatically generated)"
+
+    ^ pid
+
+    "Created: / 10.11.1998 / 21:21:53 / cg"
+!
+
+pid:something
+    "set the value of the instance variable 'pid' (automatically generated)"
+
+    pid := something.
+
+    "Created: / 10.11.1998 / 21:21:53 / cg"
+! !
+
+!Win32Process methodsFor:'starting'!
+
+startProcess
+    finishSema := Semaphore new.
+
+    pid := Processor 
+                monitor:[
+                    OperatingSystem
+                        startProcess:command
+                        inputFrom:inStream
+                        outputTo:outStream
+                        errorTo:errorStream
+                        inDirectory:directory.
+                ] 
+                action:[:status |
+                    status stillAlive ifFalse:[
+                        exitStatus := status.
+                        OperatingSystem closePid:pid.
+                        finishSema signal
+                    ].
+                ].
+
+    pid isNil ifTrue:[
+        exitStatus := self osProcessStatusClass processCreationFailure.
+        ^ false
+    ].
+
+    ^ true.
+
+    "Created: / 10.11.1998 / 21:23:50 / cg"
+    "Modified: / 10.11.1998 / 21:33:16 / cg"
+! !
+
+!Win32Process class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32Process.st,v 1.1 1998-11-11 15:01:21 cg Exp $'
+! !