Skip to content

Commit

Permalink
Merge pull request mwasilak#20 from phillipberndt/feature-block
Browse files Browse the repository at this point in the history
Improve block transfer support
  • Loading branch information
mwasilak committed Dec 6, 2018
2 parents 15dd62e + d26af90 commit ebf605e
Showing 1 changed file with 27 additions and 1 deletion.
28 changes: 27 additions & 1 deletion txthings/coap.py
Original file line number Diff line number Diff line change
Expand Up @@ -327,8 +327,10 @@ def extractBlock(self, number, size_exp):
more = True if end < len(self.payload) else False
if isRequest(block.code):
block.opt.block1 = (number, more, size_exp)
block.opt.size1 = len(self.payload)
else:
block.opt.block2 = (number, more, size_exp)
block.opt.size2 = len(self.payload)
return block

def appendRequestBlock(self, next_block):
Expand Down Expand Up @@ -529,6 +531,28 @@ def _getBlock1(self):

block1 = property(_getBlock1, _setBlock1)

def _setSize1(self, size1):
"""Convenience setter: Size1 option"""
self.deleteOption(number=SIZE1)
self.addOption(UintOption(number=SIZE1, value=size1))

def _getSize1(self):
"""Convenience getter: Size1 option"""
return self.getOption(number=SIZE1)

size1 = property(_getSize1, _setSize1)

def _setSize2(self, size2):
"""Convenience setter: Size2 option"""
self.deleteOption(number=SIZE2)
self.addOption(UintOption(number=SIZE2, value=size2))

def _getSize2(self):
"""Convenience getter: Size2 option"""
return self.getOption(number=SIZE2)

size2 = property(_getSize2, _setSize2)

def _setContentFormat(self, content_format):
"""Convenience setter: Content-Format option"""
self.deleteOption(number=CONTENT_FORMAT)
Expand Down Expand Up @@ -1110,7 +1134,9 @@ def processBlock1InResponse(self, response):
next_block = self.app_request.extractBlock(self.app_request.opt.block1.block_number + 1, block1.size_exponent)
if next_block is not None:
if block1.more is False:
return defer.fail()
if response.code not in (CREATED, DELETED, VALID, CHANGED, CONTENT, CONTINUE):
log.msg("Client returned non 2.xx response to intermediate block, code = %d." % (response.code))
return defer.fail()
self.app_request.opt.block1 = next_block.opt.block1
block1Callback, args, kw = self.cbs[1]
if block1Callback is None:
Expand Down

0 comments on commit ebf605e

Please sign in to comment.