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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)csbrokerno.tcl    /main/titanic/11
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)csbrokerno.tcl    /main/titanic/11   5 Nov 1997 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require csimplemno.tcl
  13. require brokerlogd.tcl
  14. # End user added include file section
  15.  
  16. require "csserverno.tcl"
  17.  
  18. Class CSBrokerNode : {CSServerNode} {
  19.     constructor
  20.     method destructor
  21.     method childObjects
  22.     method createChild
  23.     method changeableParameters
  24.     method getLog
  25.     method showLog
  26.     method logRegistrations
  27.     method logMessage
  28.     method shutdown
  29.     method doUpdate
  30. }
  31.  
  32. constructor CSBrokerNode {class this name i_server} {
  33.     set this [CSServerNode::constructor $class $this $name $i_server]
  34.     # Start constructor user section
  35.  
  36.         $this label [$i_server name]
  37.         $this icon rep_broker_16
  38.         $this activeIcon rep_broker_16
  39.  
  40.         $this canShowLog 1
  41.         $this canLogRegistrations 1
  42.         $this canLogMessage 1
  43.  
  44.     # End constructor user section
  45.     return $this
  46. }
  47.  
  48. method CSBrokerNode::destructor {this} {
  49.     # Start destructor user section
  50.     # End destructor user section
  51.     $this CSServerNode::destructor
  52. }
  53.  
  54. method CSBrokerNode::childObjects {this} {
  55.     set implems {}
  56.     set broker [$this server]
  57.     foreach implem [osort fullId -integer [$broker implementations]] {
  58.     # Skip lockcallbacks for now.
  59.     #
  60.     if {[$implem id] == 99} {
  61.         continue
  62.     }
  63.         lappend implems $implem
  64.     }
  65.     return $implems
  66. }
  67.  
  68. method CSBrokerNode::createChild {this object} {
  69.     return [CSImplemNode new $this.[$this childName $object] $object]
  70. }
  71.  
  72. method CSBrokerNode::changeableParameters {this} {
  73.     return [list orb_timeout]
  74. }
  75.  
  76. method CSBrokerNode::getLog {this} {
  77.     set broker [$this server]
  78.     return [$broker logFileContents]
  79. }
  80.  
  81. method CSBrokerNode::showLog {this} {
  82.     set broker [$this server]
  83.     set logFile [$broker logFile]
  84.     if {$logFile == "" || $logFile == "."} {
  85.         [$this view] error "This broker was not started using the -l option."
  86.         return
  87.     }
  88.  
  89.     set brokerHost [$broker host]
  90.     set dlg [$this view].showlogdlg-$brokerHost
  91.  
  92.     if ![isCommand $dlg] {
  93.     set thisHost [ORB::currentHost]
  94.  
  95.     if {$thisHost == $brokerHost} {
  96.         set logTitle "Broker Log of ot_broker on local host '$brokerHost'"
  97.             if $win95 {
  98.                 # otk crashes when doing this with readFile!
  99.         set logRefresh "text \[$this getLog]"
  100.             } else {
  101.         set logRefresh "readFile \[$broker logFile]"
  102.             }
  103.     } else {
  104.         set logTitle "Broker Log of ot_broker on host '$brokerHost'"
  105.         set logRefresh "text \[$this getLog]"
  106.     }
  107.  
  108.         BrokerLogDialog new $dlg \
  109.             -title $logTitle \
  110.             -refreshScript $logRefresh \
  111.             -host $brokerHost \
  112.             -file $logFile
  113.     }
  114.  
  115.     $dlg refresh
  116.     $dlg popUp
  117. }
  118.  
  119. method CSBrokerNode::logRegistrations {this} {
  120.     [$this server] logRegistrations
  121.  
  122.     set brokerHost [[$this server] host]
  123.     set dlg [$this view].showlogdlg-$brokerHost
  124.     if [isCommand $dlg] {
  125.         $dlg refresh
  126.     }
  127. }
  128.  
  129. method CSBrokerNode::logMessage {this} {
  130.     set dlg [$this view].logmsgdlg
  131.     if ![isCommand $dlg] {
  132.     set brokerHost [[$this server] host]
  133.     set logDlg [$this view].showlogdlg-$brokerHost
  134.  
  135.         EntryDialog new $dlg \
  136.             -modal 1 \
  137.             -message "Log message in log of broker on host '$brokerHost':" \
  138.             -okPressed "[$this server] logMessage \[%this entry]
  139.                         if \[isCommand $logDlg] { $logDlg refresh }"
  140.         $dlg delHelpButton
  141.     }
  142.     $dlg popUp
  143. }
  144.  
  145. method CSBrokerNode::shutdown {this {confirm 1}} {
  146.     set ns [ORB::nameServer]
  147.     set broker [$this server]
  148.  
  149.     if $confirm {
  150.         set name [$this name]
  151.         set host [$broker host]
  152.         set includingNameServer ""
  153.         if {$host == [$ns host] && [$broker pid] == [$ns pid]} {
  154.         set includingNameServer ", including the nameserver"
  155.         }
  156.  
  157.         $this confirmShutdown "Broker On '$host'" \
  158.             "Are you sure you want to shutdown the broker on host '$host'\
  159.              \nand all of its servers${includingNameServer}?" shutdownBroker
  160.         return
  161.     }
  162.  
  163.     # Shutdown all servers started by this broker.
  164.     #
  165.     set shutdownCount 0
  166.     foreach implem [$broker implementations] {
  167.         foreach server [$implem servers] {
  168.             if [catch {$server shutdown} shutdownError] {
  169.                 [$this view] error $shutdownError
  170.             } else {
  171.                 incr shutdownCount
  172.             }
  173.         }
  174.     }
  175.  
  176.     # Shutdown the broker itself.
  177.     #
  178.     if [catch {$broker shutdown} shutdownError] {
  179.         [$this view] error $shutdownError
  180.     } else {
  181.         incr shutdownCount
  182.     }
  183.  
  184.     if {$shutdownCount > 0} {
  185.     set brokers [$this parent]
  186.     $brokers update 0
  187.     }
  188. }
  189.  
  190. method CSBrokerNode::doUpdate {this {rebuild 1}} {
  191.     $this CSServerNode::doUpdate $rebuild
  192.  
  193.     set broker [$this server]
  194.     set log [$broker logFile]
  195.     if {$log == "" || $log == "."} {
  196.         set log "<none>"
  197.     }
  198.  
  199.     set info [$this info]
  200.     $info addHeader "Broker"
  201.     $info addItem "Log File" $log
  202. }
  203.  
  204. # Do not delete this line -- regeneration end marker
  205.  
  206.