1 import MashLib
2
3 # A Service class encapsulates a service by a gateway for another gateway
4 # or a client.
5
6 Class DegletService
7
8 DegletService instproc init {client_addr id} {
9 # $self set input_session_ $src_addr
10 # $self set dest_addr_ $dest_addr
11 # $self set client_rtcp_addr_ $client_rtcp_addr
12 # $self set output_session_ $send_session
13 # $self set input_session_ $recv_session
14 $self set client_addr_ $client_addr
15 $self set src_list_ ""
16 $self set id_ $id
17 $self reset_best_gateway
18 }
19
20
21 DegletService instproc set_input_session { s } {
22 $self set input_session_ $s
23 }
24
25
26 DegletService instproc set_output_session { s } {
27 $self set output_session_ $s
28 }
29
30
31 DegletService instproc set_agent { a } {
32 $self set agent_ $a
33 }
34
35
36 DegletService instproc parse_spec {spec} {
37 $self set bandwidth_ [lindex $spec 0]
38 $self set load_ [lindex $spec 1]
39 }
40
41 DegletService instproc destroy { } {
42 $self instvar output_session_ input_session_ service_state_ stable_state_ agent_
43
44 #assert [info exists service_state_] "service state not exists"
45 delete $service_state_
46 delete $agent_
47
48 }
49
50 DegletService instproc get_send_group { } { $self set dest_addr_ }
51 DegletService instproc get_bandwidth { } { $self set bandwidth_ }
52 DegletService instproc get_load { } { $self set load_ }
53 DegletService instproc get_client_rtcp_addr { } { $self set client_rtcp_addr_ }
54 DegletService instproc get_send_session { } { $self set output_session_ }
55 DegletService instproc get_recv_session { } { $self set input_session_ }
56 DegletService instproc get_sources { } { $self set src_list_ }
57
58 DegletService instproc get_best_gateway { {id 0} } {
59 $self instvar best_gateway_
60 if {![info exists best_gateway_($id)]} {
61 return ""
62 } else {
63 return [$self set best_gateway_($id)]
64 }
65 }
66
67 DegletService instproc get_best_score { {id 0} } {
68 $self instvar best_score_
69 if {![info exists best_score_($id)]} {
70 return ""
71 } else {
72 return [$self set best_score_($id)]
73 }
74 }
75
76 DegletService instproc add_source { src_addr } {
77 $self instvar src_list_
78 if {[lsearch $src_list_ $src_addr] == -1} {
79 lappend src_list_ $src_addr
80 }
81 }
82
83 DegletService instproc del_source { src_addr } {
84 $self instvar src_list_
85 set pos [lsearch $src_list_ $src_addr]
86 if {$pos == -1} {
87 return
88 }
89
90 set src_list_ [lreplace $src_list_ $pos $pos]
91 }
92
93 DegletService instproc reset_best_gateway { {id 0} } {
94 $self set best_gateway_($id) ""
95 $self set best_score_($id) 0
96 }
97
98 DegletService instproc update_best_gateway { score gateway {id 0} } {
99 $self instvar best_score_ best_gateway_
100 if {![info exists best_score_($id)]} {
101 set best_score_($id) 0
102 }
103 if {$best_score_($id) < $score} {
104 set best_gateway_($id) $gateway
105 set best_score_($id) $score
106 }
107 }
108
109 DegletService instproc set_service_state { state } {
110 $self set service_state_ $state
111 }
112
113 DegletService instproc refresh_service_state { } {
114 [$self set service_state_] refresh
115 }
116
117 DegletService instproc get_spec { } {
118 $self instvar bandwidth_ load_
119 return "{$bandwidth_ $load_}"
120 }
121
122 DegletService instproc get_client_addr { } {
123 return [$self set client_addr_]
124 }
125
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.