mirror of
https://github.com/codex-storage/das-research.git
synced 2025-02-23 16:28:27 +00:00
add segment level send/receive
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
parent
3fc7455c0b
commit
382954de02
@ -20,6 +20,12 @@ class Block:
|
|||||||
"""It merges (OR) the existing block with the received one."""
|
"""It merges (OR) the existing block with the received one."""
|
||||||
self.data |= merged.data
|
self.data |= merged.data
|
||||||
|
|
||||||
|
def getSegment(self, rowID, columnID):
|
||||||
|
return self.data[rowID*self.blockSize + columnID]
|
||||||
|
|
||||||
|
def setSegment(self, rowID, columnID, v = 1):
|
||||||
|
self.data[rowID*self.blockSize + columnID] = v
|
||||||
|
|
||||||
def getColumn(self, columnID):
|
def getColumn(self, columnID):
|
||||||
"""It returns the block column corresponding to columnID."""
|
"""It returns the block column corresponding to columnID."""
|
||||||
return self.data[columnID::self.blockSize]
|
return self.data[columnID::self.blockSize]
|
||||||
|
@ -177,6 +177,20 @@ class Validator:
|
|||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def receiveSegment(self, rID, cID, src):
|
||||||
|
# register receive so that we are not sending back
|
||||||
|
if rID in self.rowIDs:
|
||||||
|
if src in self.rowNeighbors[rID]:
|
||||||
|
self.rowNeighbors[rID][src].receiving[cID] = 1
|
||||||
|
if cID in self.columnIDs:
|
||||||
|
if src in self.columnNeighbors[cID]:
|
||||||
|
self.columnNeighbors[cID][src].receiving[rID] = 1
|
||||||
|
if not self.receivedBlock.getSegment(rID, cID):
|
||||||
|
self.receivedBlock.setSegment(rID, cID)
|
||||||
|
# else:
|
||||||
|
# self.statsRxDuplicateInSlot += 1
|
||||||
|
self.statsRxInSlot += 1
|
||||||
|
|
||||||
|
|
||||||
def receiveRowsColumns(self):
|
def receiveRowsColumns(self):
|
||||||
"""It receives rows and columns."""
|
"""It receives rows and columns."""
|
||||||
@ -266,6 +280,15 @@ class Validator:
|
|||||||
if not count:
|
if not count:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def sendSegmentToNeigh(self, rID, cID, neigh):
|
||||||
|
if not neigh.sent[cID] and not neigh.receiving[cID] :
|
||||||
|
neigh.sent[cID] = 1
|
||||||
|
neigh.node.receiveSegment(rID, cID, self.ID)
|
||||||
|
self.statsTxInSlot += 1
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False # received or already sent
|
||||||
|
|
||||||
def send(self):
|
def send(self):
|
||||||
""" Send as much as we can in the timeslot, limited by bwUplink
|
""" Send as much as we can in the timeslot, limited by bwUplink
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user