1 # ihm-port-generator.tcl --
2 #
3 # Description.
4 #
5 # Copyright (c) 1996-2002 The Regents of the University of California.
6 # All rights reserved.
7 #
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions are met:
10 #
11 # A. Redistributions of source code must retain the above copyright notice,
12 # this list of conditions and the following disclaimer.
13 # B. Redistributions in binary form must reproduce the above copyright notice,
14 # this list of conditions and the following disclaimer in the documentation
15 # and/or other materials provided with the distribution.
16 # C. Neither the names of the copyright holders nor the names of its
17 # contributors may be used to endorse or promote products derived from this
18 # software without specific prior written permission.
19 #
20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
21 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
24 # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 #
31 # @(#) $Header: /usr/mash/src/repository/mash/mash-1/tcl/indiva/ihm/ihm-port-generator.tcl,v 1.2 2002/03/13 23:39:51 weitsang Exp $
32
33 Class IHMPortGenerator
34
35
36 #-----------------------------------------------------------------------
37 # Class:
38 # IHMPortGenerator
39 #
40 # Members:
41 # maxports_ --
42 # Maximum port number to assign to services.
43 #
44 # minport_ --
45 # Minimum port number to assign to services.
46 #
47 # uniqport_ --
48 # Last unique port number assigned to a service.
49 #
50 # portmap_ --
51 # This array maintains used port number so that we can
52 # generate an unused/unique port number.
53 #
54 #-----------------------------------------------------------------------
55 IHMPortGenerator instproc init { } {
56 $self set maxports_ [$self get_option maxPorts]
57 $self set minport_ [$self get_option minPort]
58 $self set uniqport_ $minport_
59 }
60
61 #-----------------------------------------------------------------------
62 # Method:
63 # IHMPortGeneratoruniqport
64 # Description:
65 # Return a unique port number that hasn't been returned before.
66 # We keep the list of previously available port number in portmap_.
67 # FIXME: portmap_ is not updated! *BUG*
68 #-----------------------------------------------------------------------
69 IHMPortGenerator instproc gen_unique_port {} {
70 # Do this for now...
71 $self instvar uniqport_ portmap_ maxports_ minport_
72
73 # Increment so that each request has a new port number
74 incr uniqport_ 4
75 set uniqport_ [expr ($uniqport_ % $maxports_) + $minport_]
76 while { [info exists portmap_($uniqport_)] } {
77 incr uniqport_ 4
78 set uniqport_ [expr ($uniqport_ % $maxports_) + $minport_]
79 }
80 set portmap_($uniqport_) 1
81 return $uniqport_
82 }
83
84
85 #-----------------------------------------------------------------------
86 # Method:
87 # IHMPortGenerator pick_mcastaddr
88 # Description:
89 # Return a random multicast address.
90 #-----------------------------------------------------------------------
91 IHMPortGenerator public random_mcast_addr {} {
92 # FIXME
93 set r1 [expr ([random]%250)+2]
94 set r2 [expr ([random]%250)+2]
95
96 return 224.3.$r1.$r2
97 }
98
99
100
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.