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

  1. #---------------------------------------------------------------------------
  2. #
  3. #    (c) Cadre Technologies Inc. 1995
  4. #
  5. #    File:        @(#)communications.tcl    /main/hindenburg/4
  6. #    Author:        Harm Leijendeckers
  7. #    Description:    Report on communications
  8. #    Usage in:    SystemVersion and CCD editor
  9. #
  10. #---------------------------------------------------------------------------
  11. # SccsId = @(#)communications.tcl    /main/hindenburg/4    16 Dec 1996    Copyright 1995 Cadre Technologies Inc.
  12.  
  13.  
  14. eval [$cc getCustomFileContents semanticbase tcl reports]
  15.  
  16.  
  17. Class ReportCommunications : {SemanticBase} {
  18.     constructor
  19.     method doReport
  20.  
  21.     method printConnector
  22. }
  23.  
  24.  
  25. constructor ReportCommunications {class this} {
  26.     set this [SemanticBase::constructor $class $this]
  27.     $this reportName "CCD Communications"
  28.     return $this
  29. }
  30.  
  31.  
  32. method ReportCommunications::doReport {this model} {
  33.     # get all CCD Classes
  34.     set classes [concat [$model getSMObjects $OMT_CCD_Node]]
  35.     if [lempty $classes] { return 0 }
  36.  
  37.     set report [$this report]
  38.     set sortedClasses [concat \
  39.     [query "getItem.isNil == 1" $classes] \
  40.     [osort getItem.name [query "getItem.isNil == 0" $classes]]]
  41.     foreach class $sortedClasses {
  42.     set eventsSent [$class getConnectorsOut $OMT_CCD_Message $ANY]
  43.     set eventsRcvd [$class getConnectorsIn  $OMT_CCD_Message $ANY]
  44.  
  45.     if { [lempty $eventsSent] && [lempty $eventsRcvd] } {
  46.         continue
  47.     }
  48.  
  49.     set type [query -s type $class.getComponents]
  50.     $report print "[$this objName $class] ($type)" line
  51.  
  52.     # all events sent
  53.     if ![lempty $eventsSent] {
  54.         $report space 2
  55.         $report print Sends 40
  56.         $report print To 38
  57.         $report print In line
  58.         foreach sentEvent $eventsSent {
  59.         $this printConnector $sentEvent out
  60.         }
  61.     }
  62.  
  63.     # all events received
  64.     if ![lempty $eventsRcvd] {
  65.         $report space 2
  66.         $report print Receives 40
  67.         $report print From 38
  68.         $report print In line
  69.         foreach rcvdEvent $eventsRcvd {
  70.         $this printConnector $rcvdEvent in
  71.         }
  72.     }
  73.  
  74.     $report line
  75.     }
  76.  
  77.     $report page
  78.  
  79.     return 0
  80. }
  81.  
  82.  
  83. method ReportCommunications::printConnector {this conn io} {
  84.     set report [$this report]
  85.  
  86.     $report space 4
  87.     $report print [$this objName $conn] 39
  88.     $report space
  89.  
  90.     if { $io == "in" } {
  91.     set toComp [$conn getFrom $OMT_CCD_Node]
  92.     } else {
  93.     set toComp [$conn getTo   $OMT_CCD_Node]
  94.     }
  95.  
  96.     set type [query -s type $toComp.getComponents]
  97.     $report print "[$this objName $toComp] ($type)" 37
  98.     $report space
  99.     $report print [$this fullFileName [$conn getDefiningDiagram]] line
  100. }
  101.  
  102.  
  103. # ----------------------------------------------------------------------
  104. #
  105. set executeMe [ReportCommunications new]
  106.