mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-26 05:24:21 +01:00
Handle select peer packets, log sent packets
This commit is contained in:
parent
240c89f783
commit
129bfe26e9
@ -20,6 +20,9 @@ ACK = 94 # Yep
|
|||||||
REGISTER_DATA = 90
|
REGISTER_DATA = 90
|
||||||
STOP = 55 # No more packets
|
STOP = 55 # No more packets
|
||||||
|
|
||||||
|
# Flags in list peers packet
|
||||||
|
NETWORK_UPDATE_LIST_PEERS_IS_CONNECT = 1
|
||||||
|
|
||||||
pkt_type_to_str = {
|
pkt_type_to_str = {
|
||||||
CONNECT_TO_BROKER : "connect-to-broker",
|
CONNECT_TO_BROKER : "connect-to-broker",
|
||||||
LIST_PEERS : "list-peers",
|
LIST_PEERS : "list-peers",
|
||||||
@ -112,6 +115,8 @@ byte order"""
|
|||||||
return self.size
|
return self.size
|
||||||
|
|
||||||
def marshal(self):
|
def marshal(self):
|
||||||
|
if self.type != STOP and self.type != PING:
|
||||||
|
log_info("Sending packet %d (%d bytes)" % (self.type, self.size))
|
||||||
return struct.pack(">HHL", self.magic, self.type, self.size)
|
return struct.pack(">HHL", self.magic, self.type, self.size)
|
||||||
|
|
||||||
class StopPacket(Packet):
|
class StopPacket(Packet):
|
||||||
@ -228,13 +233,14 @@ class ConnectToBrokerPacket(Packet):
|
|||||||
return self._is_master
|
return self._is_master
|
||||||
|
|
||||||
class ListPeersPacket(Packet):
|
class ListPeersPacket(Packet):
|
||||||
def __init__(self, version):
|
def __init__(self, version = FRODO_NETWORK_PROTOCOL_VERSION, flags = 0):
|
||||||
Packet.__init__(self)
|
Packet.__init__(self)
|
||||||
self.n_peers = 0
|
self.n_peers = 0
|
||||||
self.peers = []
|
self.peers = []
|
||||||
self.type = LIST_PEERS
|
self.type = LIST_PEERS
|
||||||
self.size = self.size + 24
|
self.size = self.size + 24
|
||||||
self.version = version
|
self.version = version
|
||||||
|
self.flags = flags
|
||||||
|
|
||||||
def add_peer(self, peer):
|
def add_peer(self, peer):
|
||||||
self.peers.append(peer)
|
self.peers.append(peer)
|
||||||
@ -246,7 +252,7 @@ class ListPeersPacket(Packet):
|
|||||||
self.size = self.size + 8
|
self.size = self.size + 8
|
||||||
|
|
||||||
def marshal(self):
|
def marshal(self):
|
||||||
out = struct.pack(">L16sHxx", self.n_peers, "", 0)
|
out = struct.pack(">L16sHBx", self.n_peers, "", 0, self.flags)
|
||||||
|
|
||||||
for peer in self.peers:
|
for peer in self.peers:
|
||||||
name = "%s (%s)" % (peer.name, peer.country)
|
name = "%s (%s)" % (peer.name, peer.country)
|
||||||
@ -329,7 +335,7 @@ class Peer:
|
|||||||
|
|
||||||
# Send list of peers if this is not a master
|
# Send list of peers if this is not a master
|
||||||
registered_data = []
|
registered_data = []
|
||||||
lp = ListPeersPacket(FRODO_NETWORK_PROTOCOL_VERSION)
|
lp = ListPeersPacket()
|
||||||
|
|
||||||
for peer in self.srv.peers.itervalues():
|
for peer in self.srv.peers.itervalues():
|
||||||
if peer == self:
|
if peer == self:
|
||||||
@ -347,6 +353,7 @@ class Peer:
|
|||||||
# First send the registry data
|
# First send the registry data
|
||||||
for entry in registered_data:
|
for entry in registered_data:
|
||||||
rp = RegisterDataPacket(entry.get_key(), entry.get_metadata(), entry.get_data())
|
rp = RegisterDataPacket(entry.get_key(), entry.get_metadata(), entry.get_data())
|
||||||
|
print "Sending reg data", entry.get_key(), len(entry.get_data())
|
||||||
self.send_packet(rp.marshal())
|
self.send_packet(rp.marshal())
|
||||||
|
|
||||||
# And send the packet to this peer
|
# And send the packet to this peer
|
||||||
@ -373,7 +380,7 @@ class Peer:
|
|||||||
peer = self.srv.get_peer_by_id( pkt.get_id() )
|
peer = self.srv.get_peer_by_id( pkt.get_id() )
|
||||||
|
|
||||||
# Tell the peer that we have connected
|
# Tell the peer that we have connected
|
||||||
lp = ListPeersPacket(FRODO_NETWORK_PROTOCOL_VERSION)
|
lp = ListPeersPacket( flags = NETWORK_UPDATE_LIST_PEERS_IS_CONNECT )
|
||||||
lp.add_peer(self)
|
lp.add_peer(self)
|
||||||
log_info("Sending list of peers for peer selected to %s:%d" % (
|
log_info("Sending list of peers for peer selected to %s:%d" % (
|
||||||
self.addr[0], self.addr[1]))
|
self.addr[0], self.addr[1]))
|
||||||
|
Loading…
Reference in New Issue
Block a user