MCPcopy Create free account
hub / github.com/catchpoint/WebPageTest.tsproxy / tick

Method tick

tsproxy.py:134–186  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

132 return message_sent
133
134 def tick(self):
135 global connections
136 global flush_pipes
137 next_packet_time = None
138 processed_messages = False
139 now = current_time()
140 try:
141 if self.next_message is None:
142 self.next_message = self.queue.get_nowait()
143
144 # Accumulate bandwidth if an available packet/message was waiting since our last tick
145 if self.next_message is not None and self.kbps > .0 and self.next_message['time'] <= now:
146 elapsed = now - self.last_tick
147 accumulated_bytes = elapsed * self.kbps * 1000.0 / 8.0
148 self.available_bytes += accumulated_bytes
149
150 # process messages as long as the next message is sendable (latency or available bytes)
151 while (self.next_message is not None) and\
152 (flush_pipes or ((self.next_message['time'] <= now) and
153 (self.kbps <= .0 or self.next_message['size'] <= self.available_bytes))):
154 processed_messages = True
155 message = self.next_message
156 self.next_message = None
157 if self.kbps > .0:
158 self.available_bytes -= message['size']
159 try:
160 self.SendPeerMessage(message)
161 except:
162 pass
163 self.next_message = self.queue.get_nowait()
164 except Empty:
165 pass
166 except Exception as e:
167 logging.exception('Tick Exception')
168
169 # Only accumulate bytes while we have messages that are ready to send
170 if self.next_message is None or self.next_message['time'] > now:
171 self.available_bytes = .0
172 self.last_tick = now
173
174 # Figure out how long until the next packet can be sent
175 if self.next_message is not None:
176 # First, just the latency
177 next_packet_time = self.next_message['time'] - now
178 # Additional time for bandwidth
179 if self.kbps > .0:
180 accumulated_bytes = self.available_bytes + next_packet_time * self.kbps * 1000.0 / 8.0
181 needed_bytes = self.next_message['size'] - accumulated_bytes
182 if needed_bytes > 0:
183 needed_time = needed_bytes / (self.kbps * 1000.0 / 8.0)
184 next_packet_time += needed_time
185
186 return next_packet_time
187
188
189########################################################################################################################

Callers 1

run_loopFunction · 0.80

Calls 1

SendPeerMessageMethod · 0.95

Tested by

no test coverage detected