Win32Process.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 12 Jul 2010 17:20:36 +0100
branchjv
changeset 17780 b6e42c92eba0
parent 17772 6e0b3c06c364
child 17807 06cc6c49e291
permissions -rw-r--r--
Merged with /trunk

"
 COPYRIGHT (c) 1998 by eXept Software AG
              All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"
"{ Package: 'stx:libbasic' }"

Object subclass:#Win32Process
	instanceVariableNames:'command environment directory inStream outStream errorStream pid
		exitStatus finishSema'
	classVariableNames:''
	poolDictionaries:''
	category:'OS-Windows'
!

!Win32Process class methodsFor:'documentation'!

copyright
"
 COPYRIGHT (c) 1998 by eXept Software AG
              All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"
! !

!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
    ^ '$Id: Win32Process.st 10544 2010-07-12 16:20:36Z vranyj1 $'
!

version_CVS
    ^ '§Header: /cvs/stx/stx/libbasic/Win32Process.st,v 1.2 2010/02/01 11:29:35 cg Exp §'
! !