home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / csrootnode.tcl < prev    next >
Text File  |  1997-11-05  |  6KB  |  203 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)csrootnode.tcl    /main/titanic/15
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)csrootnode.tcl    /main/titanic/15   5 Nov 1997 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "repdbms.tcl"
  13. require "csservices.tcl"
  14. require "csbrokersn.tcl"
  15. # End user added include file section
  16.  
  17. require "csnode.tcl"
  18.  
  19. Class CSRootNode : {CSNode} {
  20.     constructor
  21.     method destructor
  22.     method setConfiguration
  23.     method saveConfiguration
  24.     method shutdown
  25.     method beginUpdate
  26.     method doUpdate
  27.     attribute configurationSet
  28.     attribute servicesFolded
  29.     attribute brokersFolded
  30. }
  31.  
  32. constructor CSRootNode {class this name} {
  33.     set this [CSNode::constructor $class $this $name]
  34.     # Start constructor user section
  35.  
  36.         $this label "Cayenne"
  37.         $this icon rep_pepper_16
  38.         $this activeIcon rep_pepper_16
  39.         $this canShutdown 1
  40.  
  41.     $this configurationSet 0
  42.     $this servicesFolded 0
  43.     $this brokersFolded 0
  44.  
  45.     # End constructor user section
  46.     return $this
  47. }
  48.  
  49. method CSRootNode::destructor {this} {
  50.     # Start destructor user section
  51.     # End destructor user section
  52.     $this CSNode::destructor
  53. }
  54.  
  55. method CSRootNode::setConfiguration {this} {
  56.     set folded [m4_var get M4_cstree_folded -context services]
  57.     if {$folded != ""} {
  58.     $this.services foldState $folded
  59.     }
  60.  
  61.     set folded [m4_var get M4_cstree_folded -context brokers]
  62.     if {$folded != ""} {
  63.     $this.brokers foldState $folded
  64.     }
  65. }
  66.  
  67. method CSRootNode::saveConfiguration {this} {
  68.     m4_var set M4_cstree_folded [$this.services foldState] -context services
  69.     m4_var set M4_cstree_folded [$this.brokers  foldState] -context brokers
  70. }
  71.  
  72. method CSRootNode::shutdown {this {confirm 1}} {
  73.     if $confirm {
  74.         $this confirmShutdown "Cayenne Installation" \
  75.       "Are you sure you want to shutdown\
  76.            the entire Cayenne installation?" shutdownCayenne
  77.         return
  78.     }
  79.  
  80.     # Shutdown the entire Cayenne installation: all servers, brokers
  81.     # and nameserver.
  82.     #
  83.     set shutdownCount 0
  84.     set ns [ORB::nameServer]
  85.     set nsBroker [$ns broker]
  86.     set nsShutdown 0
  87.  
  88.     foreach broker [$ns brokers] {
  89.         # Shutdown all servers of this broker.
  90.         #
  91.         foreach implem [$broker implementations] {
  92.             foreach server [$implem servers] {
  93.                 # Skip nameserver, because that fails if its broker is
  94.                 # still running.
  95.                 #
  96.                 if {$server == $ns} {
  97.                     continue
  98.                 }
  99.  
  100.                 if [catch {$server shutdown} shutdownError] {
  101.             [$this view] error $shutdownError
  102.                 } else {
  103.                     incr shutdownCount
  104.                 }
  105.             }
  106.         }
  107.  
  108.         if [catch {$broker shutdown} shutdownError] {
  109.             [$this view] error $shutdownError
  110.         } else {
  111.         incr shutdownCount
  112.  
  113.         # If name_server broker was shutdown, don't try to update,
  114.         # since that will time-out for sure.
  115.         #
  116.         if {$broker == $nsBroker} {
  117.         set nsShutdown 1
  118.         }
  119.     }
  120.     }
  121.  
  122.     if $nsShutdown {
  123.         $this.services removeChildren
  124.     $this.services hasChildren 0
  125.  
  126.         $this.brokers removeChildren
  127.     $this.brokers hasChildren 0
  128.     } elseif {$shutdownCount > 0} {
  129.         $this update 0
  130.     }
  131. }
  132.  
  133. method CSRootNode::beginUpdate {this {rebuild 1}} {
  134.     if [isCommand $this.services] {
  135.     $this servicesFolded [$this.services foldState]
  136.     $this brokersFolded [$this.brokers foldState]
  137.     }
  138.  
  139.     $this CSNode::beginUpdate $rebuild
  140. }
  141.  
  142. method CSRootNode::doUpdate {this {rebuild 1}} {
  143.     if [lempty [$this childSet]] {
  144.  
  145.     CSServicesNode new $this.services
  146.     CSBrokersNode new $this.brokers
  147.  
  148.         if [$this configurationSet] {
  149.             $this.services foldState [$this servicesFolded]
  150.             $this.brokers foldState [$this brokersFolded]
  151.         } else {
  152.         $this setConfiguration
  153.         $this configurationSet 1
  154.         }
  155.     }
  156.     $this.services update $rebuild
  157.     $this.brokers update $rebuild
  158.  
  159.     set info [$this info]
  160.  
  161.     $info addHeader "Cayenne"
  162.     $info addItem "Version"         [versionInfo versionLabel]
  163.     $info addItem "Build Date"         [versionInfo dateLabel]
  164.     $info addItem "M4 Home"         [m4_var get M4_home]
  165.     $info addItem "Meta4UserEnv"    [m4_var meta4UserEnv]
  166.  
  167.     $info addHeader "FlexLM Licensing"
  168.     set licenseFile "<not set>"
  169.     global env
  170.     if [info exists env(LM_LICENSE_FILE)] {
  171.         set licenseFile $env(LM_LICENSE_FILE)
  172.     }
  173.     $info addItem "LM_LICENSE_FILE"    $licenseFile
  174.  
  175.     $info addHeader "C/S Variables In Environment"
  176.     foreach var [Repository::orbOptions] {
  177.         set orbVar($var) {}
  178.     }
  179.  
  180.     set orbVars {}
  181.     m4_var foreach var {
  182.         set context ""
  183.         set name $var
  184.         regexp {(.*)__(.*)} $var dummy name context
  185.         
  186.         if [info exists orbVar($name)] {
  187.             lappend orbVars $var
  188.         }
  189.     }
  190.  
  191.     foreach var [lsort $orbVars] {
  192.         if {$var == "M4_orb_timeout"} {
  193.             set value [[[$this view] rep] orbTimeOut]
  194.         } else {
  195.         set value [m4_var get $var]
  196.         }
  197.     $info addItem $var $value
  198.     }
  199. }
  200.  
  201. # Do not delete this line -- regeneration end marker
  202.  
  203.