From f9fbe8980ff500f6ed8519a0054afffa6e8ff82b Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Tue, 2 Jun 2015 13:36:36 +0200 Subject: [PATCH] Implement lsn_to_bytes bytes_to_lsn functions --- helpers/utils.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/helpers/utils.py b/helpers/utils.py index 6b26444f..e08dd657 100644 --- a/helpers/utils.py +++ b/helpers/utils.py @@ -6,6 +6,32 @@ import time received_sigchld = False +def lsn_to_bytes(value): + """ + >>> lsn_to_bytes('1/66000060') + 6006243424 + >>> lsn_to_bytes('j/66000060') + 0 + """ + try: + e = value.split('/') + if len(e) == 2 and len(e[0]) > 0 and len(e[1]) > 0: + return (int(e[0], 16) << 32) | int(e[1], 16) + except ValueError: + pass + return 0 + + +def bytes_to_lsn(value): + """ + >>> bytes_to_lsn(6006243424) + '1/66000060' + """ + id = value >> 32 + off = value & 0xffffffff + return '%x/%x' % (id, off) + + def sigterm_handler(signo, stack_frame): sys.exit()