# HG changeset patch # User Claus Gittinger # Date 1540823626 -3600 # Node ID 33708933d18440678213a346e6992e6df7add337 # Parent a104045b61c8cfb86b942859ad6b8182df8f43a9 #FEATURE by cg class: ExternalStreamMonitor comment/format in: #updateList changed: #numberOfHeadlines #titleLine #updateStatus: diff -r a104045b61c8 -r 33708933d184 ExternalStreamMonitor.st --- a/ExternalStreamMonitor.st Mon Oct 29 15:33:04 2018 +0100 +++ b/ExternalStreamMonitor.st Mon Oct 29 15:33:46 2018 +0100 @@ -1,3 +1,5 @@ +"{ Encoding: utf8 }" + " COPYRIGHT (c) 1997 by Claus Gittinger All Rights Reserved @@ -222,16 +224,17 @@ titleLine OperatingSystem isMSWINDOWSlike ifTrue:[ - ^ 'Type Global Handle Detail'. + ^ 'Type Global Handle Detail'. ] ifFalse:[ - ^ 'Type Global FD Detail'. + ^ 'Type Global FD Detail'. ]. " ExternalStreamMonitor open " - "Modified: / 17.6.1998 / 14:52:48 / cg" + "Modified: / 17-06-1998 / 14:52:48 / cg" + "Modified: / 29-10-2018 / 15:28:22 / Claus Gittinger" ! updateList @@ -253,9 +256,6 @@ newList := newList select:[:eachStream | eachStream isSocket and:[eachStream isConnected]]. ]. - "sort by hashKey - will not always generate unique numbers, - but most of the time, this works ... for now" - newList sort:[:s1 :s2 | s1 className < s2 className or:[ s1 className = s2 className @@ -267,6 +267,8 @@ ]. ]. self installDelayedUpdate. + + "Modified (comment): / 29-10-2018 / 15:32:00 / Claus Gittinger" ! updateStatus:newStreamsList @@ -287,8 +289,9 @@ ]. streams notNil ifTrue:[ list := OrderedCollection new:(streams size + self numberOfHeadlines). + list add:'Time: ',(Time now printString). list add:self titleLine. - list add:(String new:self titleLine size withAll:$-). + list add:(String new:(self titleLine size+20) withAll:$-). streams validElementsDo:[:aStream | |waiters waitersNames type globalNameOrNil handleString @@ -326,16 +329,27 @@ "/ nm := '' "/ ]. type := aStream className. - - globalNameOrNil := Smalltalk keyAtValue:aStream. - + "/ beware of aliases... + aStream = Stdin ifTrue:[ + globalNameOrNil := 'Stdin'. + ] ifFalse:[ + aStream = Stdout ifTrue:[ + globalNameOrNil := 'Stdout'. + ] ifFalse:[ + aStream = Stderr ifTrue:[ + globalNameOrNil := 'Stderr'. + ] ifFalse:[ + globalNameOrNil := Smalltalk keyAtValue:aStream. + ] + ] + ]. aStream isFileStream ifTrue:[ detail := aStream pathName. ] ifFalse:[ aStream isSocket ifTrue:[ detail := ''. aStream getPeer notNil ifTrue:[ - detail := detail,(aStream getPeerName printString),(aStream getPeer printString). + detail := detail,(aStream getPeerName printString),'[',(aStream getPeer printString),']'. ]. aStream port notNil ifTrue:[ detail := detail,':',aStream port printString @@ -360,15 +374,15 @@ ] ifFalse:[ aStream isOpen ifTrue:[ [ + handleString := aStream fileDescriptor printString ] on:StreamError do:[ - handleString := aStream fileDescriptor printString ]. ]. handleString := (handleString ? '') leftPaddedTo:3 ]. - line := (type contractTo:20) paddedTo:20. - line := line , ' ' , (((globalNameOrNil ? '') contractTo:25) paddedTo:25). + line := (type contractTo:30) paddedTo:30. + line := line , ' ' , (((globalNameOrNil ? '') contractTo:30) paddedTo:30). line := line , ' ' , handleString. line := line , ' ' , (detail ? ''). @@ -422,6 +436,7 @@ self installDelayedUpdate. "Modified: / 11-10-2017 / 13:56:14 / cg" + "Modified: / 29-10-2018 / 15:33:31 / Claus Gittinger" ! ! !ExternalStreamMonitor methodsFor:'menu'! @@ -487,7 +502,9 @@ !ExternalStreamMonitor methodsFor:'queries'! numberOfHeadlines - ^ 2 + ^ 3 + + "Modified: / 29-10-2018 / 15:24:14 / Claus Gittinger" ! ! !ExternalStreamMonitor methodsFor:'user actions'!