home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / csbrokerno.tcl < prev    next >
Text File  |  1996-10-18  |  3KB  |  117 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)csbrokerno.tcl    /main/hindenburg/8
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)csbrokerno.tcl    /main/hindenburg/8   18 Oct 1996 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require csimplemno.tcl
  13. # End user added include file section
  14.  
  15. require "csserverno.tcl"
  16.  
  17. Class CSBrokerNode : {CSServerNode} {
  18.     constructor
  19.     method destructor
  20.     method childObjects
  21.     method createChild
  22.     method changeableParameters
  23.     method shutdown
  24.     method doUpdate
  25. }
  26.  
  27. constructor CSBrokerNode {class this name i_server} {
  28.     set this [CSServerNode::constructor $class $this $name $i_server]
  29.     # Start constructor user section
  30.  
  31.         $this label [$i_server name]
  32.         $this icon rep_broker_16
  33.  
  34.     # End constructor user section
  35.     return $this
  36. }
  37.  
  38. method CSBrokerNode::destructor {this} {
  39.     # Start destructor user section
  40.     # End destructor user section
  41.     $this CSServerNode::destructor
  42. }
  43.  
  44. method CSBrokerNode::childObjects {this} {
  45.     set implems {}
  46.     set broker [$this server]
  47.     foreach implem [osort fullId -integer [$broker implementations]] {
  48.     # Skip lockcallbacks for now.
  49.     #
  50.     if {[$implem id] == 99} {
  51.         continue
  52.     }
  53.         lappend implems $implem
  54.     }
  55.     return $implems
  56. }
  57.  
  58. method CSBrokerNode::createChild {this object} {
  59.     return [CSImplemNode new $this.[$this childName $object] $object]
  60. }
  61.  
  62. method CSBrokerNode::changeableParameters {this} {
  63.     return [list orb_timeout]
  64. }
  65.  
  66. method CSBrokerNode::shutdown {this {confirm 1}} {
  67.     set ns [ORB::nameServer]
  68.     set broker [$this server]
  69.  
  70.     if $confirm {
  71.         set name [$this name]
  72.         set host [$broker host]
  73.         set includingNameServer ""
  74.         if {$host == [$ns host] && [$broker pid] == [$ns pid]} {
  75.         set includingNameServer ", including the nameserver"
  76.         }
  77.  
  78.         $this confirmShutdown "Shutdown Broker On '$host'" \
  79.             "Are you sure you want to shutdown the broker on host '$host'\
  80.              \nand all of its servers${includingNameServer}?" shutdownBroker
  81.         return
  82.     }
  83.  
  84.     # Shutdown all servers started by this broker.
  85.     #
  86.     set shutdownCount 0
  87.     foreach implem [$broker implementations] {
  88.         foreach server [$implem servers] {
  89.             if [catch {$server shutdown} shutdownError] {
  90.                 [$this view] error $shutdownError
  91.             } else {
  92.                 incr shutdownCount
  93.             }
  94.         }
  95.     }
  96.  
  97.     # Shutdown the broker itself.
  98.     #
  99.     if [catch {$broker shutdown} shutdownError] {
  100.         [$this view] error $shutdownError
  101.     } else {
  102.         incr shutdownCount
  103.     }
  104.  
  105.     if {$shutdownCount > 0} {
  106.     set brokers [$this parent]
  107.     $brokers update 0
  108.     }
  109. }
  110.  
  111. method CSBrokerNode::doUpdate {this {rebuild 1}} {
  112.     $this CSServerNode::doUpdate $rebuild
  113. }
  114.  
  115. # Do not delete this line -- regeneration end marker
  116.  
  117.