|
|
|
@ -112,9 +112,24 @@ class Stream(object): |
|
|
|
|
time it was called up until the point `advance_current_token` was called. |
|
|
|
|
""" |
|
|
|
|
NAME = None # The name of the stream |
|
|
|
|
ROW_TYPE = None # The type of the row |
|
|
|
|
ROW_TYPE = None # The type of the row. Used by the default impl of parse_row. |
|
|
|
|
_LIMITED = True # Whether the update function takes a limit |
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
|
def parse_row(cls, row): |
|
|
|
|
"""Parse a row received over replication |
|
|
|
|
|
|
|
|
|
By default, assumes that the row data is an array object and passes its contents |
|
|
|
|
to the constructor of the ROW_TYPE for this stream. |
|
|
|
|
|
|
|
|
|
Args: |
|
|
|
|
row: row data from the incoming RDATA command, after json decoding |
|
|
|
|
|
|
|
|
|
Returns: |
|
|
|
|
ROW_TYPE object for this stream |
|
|
|
|
""" |
|
|
|
|
return cls.ROW_TYPE(*row) |
|
|
|
|
|
|
|
|
|
def __init__(self, hs): |
|
|
|
|
# The token from which we last asked for updates |
|
|
|
|
self.last_token = self.current_token() |
|
|
|
@ -186,7 +201,7 @@ class Stream(object): |
|
|
|
|
from_token, current_token, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
updates = [(row[0], self.ROW_TYPE(*row[1:])) for row in rows] |
|
|
|
|
updates = [(row[0], row[1:]) for row in rows] |
|
|
|
|
|
|
|
|
|
# check we didn't get more rows than the limit. |
|
|
|
|
# doing it like this allows the update_function to be a generator. |
|
|
|
|