MCPcopy
hub / github.com/HelloZeroNet/ZeroNet / _process_announce

Method _process_announce

src/lib/subtl/subtl.py:139–167  ·  view source on GitHub ↗
(self, payload, trans)

Source from the content-addressed store, hash-verified

137 return self.conn_id
138
139 def _process_announce(self, payload, trans):
140 response = {}
141
142 info_struct = '!LLL'
143 info_size = struct.calcsize(info_struct)
144 info = payload[:info_size]
145 interval, leechers, seeders = struct.unpack(info_struct, info)
146
147 peer_data = payload[info_size:]
148 peer_struct = '!LH'
149 peer_size = struct.calcsize(peer_struct)
150 peer_count = int(len(peer_data) / peer_size)
151 peers = []
152
153 for peer_offset in range(peer_count):
154 off = peer_size * peer_offset
155 peer = peer_data[off:off + peer_size]
156 addr, port = struct.unpack(peer_struct, peer)
157 peers.append({
158 'addr': socket.inet_ntoa(struct.pack('!L', addr)),
159 'port': port,
160 })
161
162 return {
163 'interval': interval,
164 'leechers': leechers,
165 'seeders': seeders,
166 'peers': peers,
167 }
168
169 def _process_scrape(self, payload, trans):
170 info_struct = '!LLL'

Callers 1

_process_responseMethod · 0.95

Calls 2

unpackMethod · 0.45
packMethod · 0.45

Tested by

no test coverage detected