Skip to content

Commit dba5278

Browse files
committed
Merge pull request #1 from RoadRunnr/master
update packet endoding to ZRE 2
2 parents 0361a05 + db0c86a commit dba5278

File tree

2 files changed

+31
-22
lines changed

2 files changed

+31
-22
lines changed

pyre.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ def recv_api(self):
350350
msg.set_group(grpname)
351351
self.status += 1
352352
msg.set_status(self.status)
353-
for peer in self.peers:
353+
for peer in self.peers.values():
354354
peer.send(msg)
355355
self.own_groups.pop(grpname)
356356
print("Node is leaving group %s" % grpname)

zre_msg.py

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ def recv(self, input_socket):
8787
self.id = self._get_number1();
8888
#print("ZreMsg id: %i" % self.id)
8989

90+
version = self._get_number1()
91+
if version != 2:
92+
logger.debug("Invalid version {0}".format(version))
93+
return None
94+
9095
if self.id == ZreMsg.HELLO:
9196
self.unpack_hello()
9297
elif self.id == ZreMsg.WHISPER:
@@ -125,6 +130,9 @@ def send(self, output_socket):
125130
#print("ZreMsg: ", self.id)
126131
self._put_number1(self.id)
127132
#print(self.struct_data)
133+
# add version
134+
self._put_number1(2)
135+
128136
if self.id == ZreMsg.HELLO:
129137
self.pack_hello()
130138
elif self.id == ZreMsg.WHISPER:
@@ -339,10 +347,6 @@ def _put_long_string(self, s):
339347
d = struct.pack('%is' %len(s), s.encode('UTF-8'))
340348
self.struct_data += d
341349

342-
def _zre_dictstring_to_dict(self, s):
343-
l = s.split("=")
344-
return { l[0]: l[1] }
345-
346350
def unpack_hello(self):
347351
"""unpack a zre hello packet
348352
@@ -370,11 +374,12 @@ def unpack_hello(self):
370374
#print("post_group: needle is at: %i"% self._needle )
371375
self.status = self._get_number1()
372376
self.name = self._get_string()
373-
headers_len = self._get_number1()
377+
headers_len = self._get_number4()
374378
self.headers = {}
375379
for x in range(headers_len):
376-
hdr_item = self._get_string()
377-
self.headers.update(self._zre_dictstring_to_dict(hdr_item))
380+
key = self._get_string()
381+
val = self._get_long_string()
382+
self.headers.update({key: val})
378383
#import ast
379384
#for hdr in hdrlist:
380385
# # TODO: safer to use ast.literal_eval
@@ -405,22 +410,27 @@ def pack_hello(self):
405410
self._put_string(self.name)
406411
self._put_number4(len(self.headers))
407412
for key, val in self.headers.items():
408-
self._put_long_string("%s=%s" %(key, val))
413+
self._put_string(key)
414+
self._put_long_string(val)
409415

410416
if __name__ == '__main__':
411-
testdata = struct.pack('Hb3sHbb2sb2sb2sbbb3sb3s',
412-
11, # sequence
413-
3, # str length
417+
testdata = struct.pack('>Hb9sII2sI2sI2sbb4sIb1sI1sb1sI1s',
418+
11, # sequence
419+
9, # str length
414420
b"192:20123", # endpoint
415-
3, # groups len
416-
2,b"g1", # length + groupname
417-
2,b"g2", # length + groupname
418-
2,b"g3", # length + groupname
419-
4, # status
420-
2, # header len
421-
3,b"a=z", # length + dict
422-
3,b"b=x" # length + dict
423-
)
421+
3, # groups len
422+
2, b"g1", # length + groupname
423+
2, b"g2", # length + groupname
424+
2, b"g3", # length + groupname
425+
4, # status
426+
4, b"NAME", # name
427+
2, # header len
428+
1, b"a", # length + dict
429+
1, b"z", # length + dict
430+
1, b"b", # length + dict
431+
1, b"b" # length + dict
432+
)
433+
424434
print("New ZRE HELLO message")
425435
m = ZreMsg(ZreMsg.HELLO, data=testdata)
426436
print("Unpack a HELLO message")
@@ -429,4 +439,3 @@ def pack_hello(self):
429439
m.pack_hello()
430440
print("Unpack the packed HELLO message")
431441
m.unpack_hello()
432-

0 commit comments

Comments
 (0)