ExternalStreamMonitor.st
changeset 18505 4972f3ec73de
parent 18504 33708933d184
child 18506 b07e5f5e1c15
equal deleted inserted replaced
18504:33708933d184 18505:4972f3ec73de
    15 
    15 
    16 "{ NameSpace: Smalltalk }"
    16 "{ NameSpace: Smalltalk }"
    17 
    17 
    18 SystemStatusMonitor subclass:#ExternalStreamMonitor
    18 SystemStatusMonitor subclass:#ExternalStreamMonitor
    19 	instanceVariableNames:'semaphores streams filterOpenStreamsOnlyHolder
    19 	instanceVariableNames:'semaphores streams filterOpenStreamsOnlyHolder
    20 		filterSocketsOnlyHolder filterConnectedSocketsOnlyHolder'
    20 		filterPipesOnlyHolder filterSocketsOnlyHolder
       
    21 		filterConnectedSocketsOnlyHolder'
    21 	classVariableNames:''
    22 	classVariableNames:''
    22 	poolDictionaries:''
    23 	poolDictionaries:''
    23 	category:'Monitors-ST/X'
    24 	category:'Monitors-ST/X'
    24 !
    25 !
    25 
    26 
    91     ^ 
    92     ^ 
    92      #(Menu
    93      #(Menu
    93         (
    94         (
    94          (MenuItem
    95          (MenuItem
    95             label: 'Open Streams Only'
    96             label: 'Open Streams Only'
       
    97             indication: filterOpenStreamsOnlyHolder
    96             hideMenuOnActivated: false
    98             hideMenuOnActivated: false
    97             indication: filterOpenStreamsOnlyHolder
       
    98           )
    99           )
    99          (MenuItem
   100          (MenuItem
   100             label: '-'
   101             label: '-'
   101           )
   102           )
   102          (MenuItem
   103          (MenuItem
       
   104             label: 'Pipes Only'
       
   105             indication: filterPipesOnlyHolder
       
   106             hideMenuOnActivated: false
       
   107           )
       
   108          (MenuItem
       
   109             label: '-'
       
   110           )
       
   111          (MenuItem
   103             label: 'Sockets Only'
   112             label: 'Sockets Only'
       
   113             indication: filterSocketsOnlyHolder
   104             hideMenuOnActivated: false
   114             hideMenuOnActivated: false
   105             indication: filterSocketsOnlyHolder
       
   106           )
   115           )
   107          (MenuItem
   116          (MenuItem
   108             label: 'Connected Sockets Only'
   117             label: 'Connected Sockets Only'
       
   118             indication: filterConnectedSocketsOnlyHolder
   109             hideMenuOnActivated: false
   119             hideMenuOnActivated: false
   110             indication: filterConnectedSocketsOnlyHolder
       
   111           )
   120           )
   112          )
   121          )
   113         nil
   122         nil
   114         nil
   123         nil
   115       )
   124       )
   203 !
   212 !
   204 
   213 
   205 filterOpenStreamsOnlyHolder 
   214 filterOpenStreamsOnlyHolder 
   206     filterOpenStreamsOnlyHolder isNil ifTrue:[
   215     filterOpenStreamsOnlyHolder isNil ifTrue:[
   207         filterOpenStreamsOnlyHolder := true asValue.
   216         filterOpenStreamsOnlyHolder := true asValue.
   208         filterSocketsOnlyHolder onChangeSend:#filterOpenStreamsOnlyHolder to:self.
   217         filterOpenStreamsOnlyHolder onChangeSend:#filterOpenStreamsOnlyHolderChanged to:self.
   209     ].    
   218     ].    
   210     ^ filterOpenStreamsOnlyHolder
   219     ^ filterOpenStreamsOnlyHolder
   211 
   220 
   212     "Modified: / 09-10-2018 / 11:16:44 / Claus Gittinger"
   221     "Modified: / 29-10-2018 / 15:44:11 / Claus Gittinger"
       
   222 !
       
   223 
       
   224 filterPipesOnlyHolder
       
   225     filterPipesOnlyHolder isNil ifTrue:[
       
   226         filterPipesOnlyHolder := false asValue.
       
   227         filterPipesOnlyHolder onChangeSend:#filterPipesOnlyHolderChanged to:self.
       
   228     ].    
       
   229     ^ filterPipesOnlyHolder
       
   230 
       
   231     "Created: / 29-10-2018 / 15:36:07 / Claus Gittinger"
   213 !
   232 !
   214 
   233 
   215 filterSocketsOnlyHolder
   234 filterSocketsOnlyHolder
   216     filterSocketsOnlyHolder isNil ifTrue:[
   235     filterSocketsOnlyHolder isNil ifTrue:[
   217         filterSocketsOnlyHolder := false asValue.
   236         filterSocketsOnlyHolder := false asValue.
   244 
   263 
   245     shown ifTrue:[
   264     shown ifTrue:[
   246         newList := ExternalStream allSubInstances.
   265         newList := ExternalStream allSubInstances.
   247         newList := newList reject:#isExecutor.
   266         newList := newList reject:#isExecutor.
   248         
   267         
   249         self filterSocketsOnlyHolder value ifTrue:[
       
   250             newList := newList select:[:eachStream | eachStream isSocket].
       
   251         ].
       
   252         self filterOpenStreamsOnlyHolder value ifTrue:[
   268         self filterOpenStreamsOnlyHolder value ifTrue:[
   253             newList := newList select:[:eachStream | eachStream isOpen].
   269             newList := newList select:[:eachStream | eachStream isOpen].
   254         ].
   270         ].
   255         self filterConnectedSocketsOnlyHolder value ifTrue:[
   271 
   256             newList := newList select:[:eachStream | eachStream isSocket and:[eachStream isConnected]].
   272         self filterPipesOnlyHolder value ifTrue:[
       
   273             newList := newList select:[:eachStream | eachStream isPipeStream].
       
   274         ] ifFalse:[
       
   275             self filterSocketsOnlyHolder value ifTrue:[
       
   276                 newList := newList select:[:eachStream | eachStream isSocket].
       
   277             ].
       
   278             self filterConnectedSocketsOnlyHolder value ifTrue:[
       
   279                 newList := newList select:[:eachStream | eachStream isSocket and:[eachStream isConnected]].
       
   280             ].
   257         ].
   281         ].
   258         
   282         
   259         newList sort:[:s1 :s2 | 
   283         newList sort:[:s1 :s2 | 
   260                     s1 className < s2 className
   284                     s1 className < s2 className
   261                     or:[ s1 className = s2 className
   285                     or:[ s1 className = s2 className
   266             self updateStatus:newList
   290             self updateStatus:newList
   267         ].
   291         ].
   268     ].
   292     ].
   269     self installDelayedUpdate.
   293     self installDelayedUpdate.
   270 
   294 
   271     "Modified (comment): / 29-10-2018 / 15:32:00 / Claus Gittinger"
   295     "Modified: / 29-10-2018 / 15:39:43 / Claus Gittinger"
   272 !
   296 !
   273 
   297 
   274 updateStatus:newStreamsList
   298 updateStatus:newStreamsList
   275     "update status display of semaphores"
   299     "update status display of semaphores"
   276 
   300 
   518     "Modified: / 31-01-1997 / 22:33:27 / cg"
   542     "Modified: / 31-01-1997 / 22:33:27 / cg"
   519     "Modified (comment): / 07-04-2017 / 14:28:01 / cg"
   543     "Modified (comment): / 07-04-2017 / 14:28:01 / cg"
   520 !
   544 !
   521 
   545 
   522 filterConnectedSocketsOnlyHolderChanged
   546 filterConnectedSocketsOnlyHolderChanged
       
   547     self filterConnectedSocketsOnlyHolder value ifTrue:[
       
   548         self filterPipesOnlyHolder value:false.
       
   549     ].        
   523     self sensor pushUserEvent:#updateList for:self
   550     self sensor pushUserEvent:#updateList for:self
       
   551 
       
   552     "Modified: / 29-10-2018 / 15:48:44 / Claus Gittinger"
   524 !
   553 !
   525 
   554 
   526 filterOpenStreamsOnlyHolderChanged
   555 filterOpenStreamsOnlyHolderChanged
   527     self sensor pushUserEvent:#updateList for:self
   556     self sensor pushUserEvent:#updateList for:self
   528 !
   557 !
   529 
   558 
       
   559 filterPipesOnlyHolderChanged
       
   560     self filterPipesOnlyHolder value ifTrue:[
       
   561         self filterSocketsOnlyHolder value:false.
       
   562         self filterConnectedSocketsOnlyHolder value:false.
       
   563     ].        
       
   564     self sensor pushUserEvent:#updateList for:self
       
   565 
       
   566     "Created: / 29-10-2018 / 15:36:45 / Claus Gittinger"
       
   567 !
       
   568 
   530 filterSocketsOnlyHolderChanged
   569 filterSocketsOnlyHolderChanged
       
   570     self filterSocketsOnlyHolder value ifTrue:[
       
   571         self filterPipesOnlyHolder value:false.
       
   572     ].
   531     self sensor pushUserEvent:#updateList for:self
   573     self sensor pushUserEvent:#updateList for:self
       
   574 
       
   575     "Modified: / 29-10-2018 / 15:48:40 / Claus Gittinger"
   532 !
   576 !
   533 
   577 
   534 inspectStream
   578 inspectStream
   535     "open an inspector on the selected stream(s)"
   579     "open an inspector on the selected stream(s)"
   536 
   580