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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)csimplemno.tcl    /main/titanic/8
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)csimplemno.tcl    /main/titanic/8   5 Nov 1997 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "csbrokerno.tcl"
  13. require "csnameserv.tcl"
  14. require "csdbserver.tcl"
  15. require "cslockserv.tcl"
  16. require "csparamdia.tcl"
  17.  
  18.     proc CSImplemNode::cmpObject {obj1 obj2} {
  19.     set info [ORB::decodeObjectId [$obj1 identity]]
  20.     set implemId [ORB::makeImplemId [lindex $info 1] [lindex $info 2]]
  21.     set def [[ORB::nameServer] findServerDefinition $implemId]
  22.     set name1 [lindex $def 0]
  23.  
  24.     set info [ORB::decodeObjectId [$obj2 identity]]
  25.     set implemId [ORB::makeImplemId [lindex $info 1] [lindex $info 2]]
  26.     set def [[ORB::nameServer] findServerDefinition $implemId]
  27.     set name2 [lindex $def 0]
  28.  
  29.     return [string compare $name1 $name2]
  30.     }
  31.  
  32. # End user added include file section
  33.  
  34. require "csnode.tcl"
  35.  
  36. Class CSImplemNode : {CSNode} {
  37.     constructor
  38.     method destructor
  39.     method childName
  40.     method childObjects
  41.     method createChild
  42.     method changeParameters
  43.     method shutdown
  44.     method doUpdate
  45.     attribute implem
  46.     attribute paramDialog
  47. }
  48.  
  49. constructor CSImplemNode {class this name i_implem} {
  50.     set this [CSNode::constructor $class $this $name]
  51.     $this implem $i_implem
  52.     # Start constructor user section
  53.  
  54.         $this label [$i_implem name]
  55.         $this icon rep_implem_16
  56.         $this activeIcon rep_implem_16
  57.  
  58.         $this canChangeParams 1
  59.         $this canShutdown 1
  60.  
  61.     # End constructor user section
  62.     return $this
  63. }
  64.  
  65. method CSImplemNode::destructor {this} {
  66.     # Start destructor user section
  67.     # End destructor user section
  68.     $this CSNode::destructor
  69. }
  70.  
  71. method CSImplemNode::childName {this object} {
  72.     set nodeName [$object identity]
  73.     regsub -all {\.} $nodeName {_} nodeName
  74.     return $nodeName
  75. }
  76.  
  77. method CSImplemNode::childObjects {this} {
  78.     return [lsort -command CSImplemNode::cmpObject [[$this implem] servers]]
  79. }
  80.  
  81. method CSImplemNode::createChild {this object} {
  82.     set name $this.[$this childName $object]
  83.     set implem [$this implem]
  84.     set id [$implem id]
  85.  
  86.     switch $id {
  87.         1    { CSBrokerNode new $name $object }
  88.         2    { CSNameServerNode new $name $object }
  89.         100    { CSLockServerNode new $name $object }
  90.         default    { 
  91.             if {$id > 100 && $id < 1000} {
  92.         CSDbServerNode new $name $object
  93.             } else {
  94.                 # For lockcallback (99), BrokerProxy plus
  95.                 # BrokerImplemServer (> 1000) implementations.
  96.                 #
  97.         CSServerNode new $name $object
  98.             }
  99.         }
  100.     }
  101.     return $name
  102. }
  103.  
  104. method CSImplemNode::changeParameters {this} {
  105.     if {[$this paramDialog] == ""} {
  106.         set implem [$this implem]
  107.     set name paramdlg-[[$implem broker] name]-[$implem name]
  108.     regsub -all {\.} $name {_} name
  109.  
  110.         $this paramDialog [CSParamDialog new .main.$name \
  111.                 [$this view] \
  112.                 $this \
  113.                 "concat [list $implem] \[$implem servers]" \
  114.                                 [list orb_timeout \
  115.                                       orb_linger \
  116.                                       orb_report \
  117.                                       orb_maxclients \
  118.                                       orb_maxinstances]]
  119.     }
  120.     [$this paramDialog] popUp
  121. }
  122.  
  123. method CSImplemNode::shutdown {this {confirm 1}} {
  124.     if $confirm {
  125.         set name [$this name]
  126.         set host [[[$this implem] broker] host]
  127.         $this confirmShutdown "All Servers Of Implementation '$name' On '$host'" \
  128.             "Are you sure you want to shutdown all servers\
  129.              of implementation '$name' on host '$host'?" shutdownImplem
  130.         return
  131.     }
  132.  
  133.     set shutdownCount 0
  134.     set implem [$this implem]
  135.     foreach server [$implem servers] {
  136.     if [catch {$server shutdown} shutdownError] {
  137.         [$this view] error $shutdownError
  138.     } else {
  139.             incr shutdownCount
  140.         }
  141.     }
  142.  
  143.     if {$shutdownCount > 0} {
  144.         set broker [$this parent]
  145.     $broker update 1
  146.     }
  147. }
  148.  
  149. method CSImplemNode::doUpdate {this {rebuild 1}} {
  150.     $this CSNode::doUpdate $rebuild
  151.  
  152.     set implem [$this implem]
  153.     set info [$this info]
  154.  
  155.     $info addHeader "Implementation"
  156.     $info addItem "Name"        [$implem name]
  157.     $info addItem "Id"             [$implem id].[$implem version]
  158.     $info addItem "Policy"        [$implem policy]
  159.     $info addItem "Protocol"         [$implem protocol]
  160.  
  161.     if {[$implem executable] != ""} {
  162.     $info addItem "Executable Path" [$implem executable]
  163.     }
  164.     if {[$implem commandLine] != ""} {
  165.     $info addItem "Command Line"    [$implem commandLine]
  166.     }
  167.     if {[$implem host] != ""} {
  168.     $info addItem "Host"            [$implem host]
  169.     }
  170.     if {[$implem object] != [[ORB::nil] identity]} {
  171.     $info addItem "Object"            [$implem object]
  172.     }
  173.     if {[$implem method] != 0} {
  174.     $info addItem "Method"            [$implem method]
  175.     }
  176.  
  177.     $info addHeader "Parameters"
  178.     $info addParameter orb_timeout    [$implem getParameter orb_timeout]
  179.     $info addParameter orb_linger    [$implem getParameter orb_linger]
  180.     $info addParameter orb_report    [$implem getParameter orb_report]
  181.     $info addParameter orb_maxclients    [$implem getParameter orb_maxclients]
  182.     $info addParameter orb_maxinstances    [$implem getParameter orb_maxinstances]
  183. }
  184.  
  185. # Do not delete this line -- regeneration end marker
  186.  
  187.