Skip to content

Commit 0224b79

Browse files
committed
Add filterload wire message
1 parent 1846a87 commit 0224b79

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

bitcoin/messages.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
from bitcoin.core import *
3434
from bitcoin.core.serialize import *
3535
from bitcoin.net import *
36+
from bitcoin.bloom import CBloomFilter
3637
import bitcoin
3738

3839
MSG_TX = 1
@@ -505,6 +506,28 @@ def msg_ser(self, f):
505506
def __repr__(self):
506507
return "msg_mempool()"
507508

509+
510+
class msg_filterload(MsgSerializable):
511+
command = b"filterload"
512+
513+
def __init__(self, protover=PROTO_VERSION, filter=None):
514+
super(msg_filterload, self).__init__(protover)
515+
self.protover = protover
516+
self.filter = filter
517+
518+
@classmethod
519+
def msg_deser(cls, f, protover=PROTO_VERSION):
520+
c = cls()
521+
c.filter = CBloomFilter.stream_deserialize(f)
522+
return c
523+
524+
def msg_ser(self, f):
525+
self.filter.stream_serialize(f)
526+
527+
def __repr__(self):
528+
return "msg_filterload(vData=%i nHashFunctions=%i nTweak=%i nFlags=%i" % (self.filter.vData, self.filter.nHashFunctions, self.filter.nTweak, self.filter.nFlags)
529+
530+
508531
msg_classes = [msg_version, msg_verack, msg_addr, msg_alert, msg_inv,
509532
msg_getdata, msg_notfound, msg_getblocks, msg_getheaders,
510533
msg_headers, msg_tx, msg_block, msg_getaddr, msg_ping,
@@ -536,6 +559,7 @@ def __repr__(self):
536559
'msg_ping',
537560
'msg_pong',
538561
'msg_mempool',
562+
'msg_filterload',
539563
'msg_classes',
540564
'messagemap',
541565
)

bitcoin/tests/test_messages.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313

1414
from bitcoin.messages import msg_version, msg_verack, msg_addr, msg_alert, \
1515
msg_inv, msg_getdata, msg_getblocks, msg_getheaders, msg_headers, msg_tx, \
16-
msg_block, msg_merkleblock, msg_getaddr, msg_ping, msg_pong, msg_mempool, MsgSerializable, \
17-
msg_notfound, msg_reject
16+
msg_block, msg_merkleblock, msg_getaddr, msg_ping, msg_pong, msg_mempool, msg_filterload, \
17+
MsgSerializable, msg_notfound, msg_reject
1818

1919
import sys
2020
if sys.version > '3':
@@ -122,6 +122,11 @@ def test_serialization(self):
122122
super(Test_msg_mempool, self).serialization_test(msg_mempool)
123123

124124

125+
class Test_msg_filterload(MessageTestCase):
126+
def test_serialization(self):
127+
super(Test_msg_filterload, self).serialization_test(msg_filterload)
128+
129+
125130
class Test_messages(unittest.TestCase):
126131
verackbytes = b'\xf9\xbe\xb4\xd9verack\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00]\xf6\xe0\xe2'
127132

0 commit comments

Comments
 (0)