Bug #483 » 0002-generate_packets.py-always-transmit-new-elements-in-.patch
| common/generate_packets.py | ||
|---|---|---|
|
"""Helper method. Generate array-diff put code."""
|
||
|
# we're nesting two levels deep in the JSON structure
|
||
|
sub = location.sub_full(2)
|
||
|
inner_put = prefix(" ", self.elem.get_code_put(sub, True))
|
||
|
# Note: At the moment, we're only deep-diffing our elements
|
||
|
# if our array size is constant
|
||
|
inner_put = prefix(" ", self.elem.get_code_put(sub, self.size.constant))
|
||
|
inner_cmp = prefix(" ", self.elem.get_code_cmp(sub))
|
||
|
index_put = prefix(" ", self.size.index_put(location.index))
|
||
|
index_put_sentinel = prefix(" ", self.size.index_put(self.size.real))
|
||
|
if not self.size.constant:
|
||
|
inner_cmp = f"""\
|
||
|
if ({location.index} < {self.size.old}) {{
|
||
|
{prefix(" ", inner_cmp)}\
|
||
|
}} else {{
|
||
|
/* Always transmit new elements */
|
||
|
differ = TRUE;
|
||
|
}}
|
||
|
"""
|
||
|
return f"""\
|
||
|
{self.size.size_check_index(location.name)}\
|
||
|
{{
|
||
| common/networking/packets.def | ||
|---|---|---|
|
diff: use the array-diff feature. This will reduce the amount of
|
||
|
traffic for large arrays in which only a few elements change.
|
||
|
Note that in multidemensional arrays, the individual sub-arrays
|
||
|
only get diff'd if the higher levels have constant length.
|
||
|
add-cap: only transfer this field if the given capability is
|
||
|
available at runtime. If you have a capability named
|
||
- « Previous
- 1
- 2
- Next »