diff options
author | Richard van der Hoff <richard@matrix.org> | 2019-03-27 07:40:32 +0000 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2019-03-27 21:32:33 +0000 |
commit | f570916a3eb4088500e966182dea82647a5acac2 (patch) | |
tree | 3e0aafef86b16b813e1617d5352ba85085b422ec /synapse/replication/tcp/streams | |
parent | changelog (diff) | |
download | synapse-f570916a3eb4088500e966182dea82647a5acac2.tar.xz |
Add parse_row method to replication stream class
This will allow individual stream classes to override how a row is parsed.
Diffstat (limited to 'synapse/replication/tcp/streams')
-rw-r--r-- | synapse/replication/tcp/streams/_base.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/synapse/replication/tcp/streams/_base.py b/synapse/replication/tcp/streams/_base.py index 18df89deed..25c3a23664 100644 --- a/synapse/replication/tcp/streams/_base.py +++ b/synapse/replication/tcp/streams/_base.py @@ -115,6 +115,21 @@ class Stream(object): ROW_TYPE = None # The type of the 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() |