Source code for M2Crypto.SSL.timeout

"""Support for SSL socket timeouts.

Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.

Copyright 2008 Heikki Toivonen. All rights reserved.
"""

__all__ = ['DEFAULT_TIMEOUT', 'timeout', 'struct_to_timeout', 'struct_size']

import sys
import struct

DEFAULT_TIMEOUT = 600  # type: int


[docs] class timeout(object): def __init__(self, sec=DEFAULT_TIMEOUT, microsec=0): # type: (int, int) -> None self.sec = sec self.microsec = microsec
[docs] def pack(self): if sys.platform == 'win32': millisec = int(self.sec * 1000 + round(float(self.microsec) / 1000)) binstr = struct.pack('l', millisec) else: binstr = struct.pack('ll', self.sec, self.microsec) return binstr
[docs] def struct_to_timeout(binstr): # type: (bytes) -> timeout if sys.platform == 'win32': millisec = struct.unpack('l', binstr)[0] # On py3, int/int performs exact division and returns float. We want # the whole number portion of the exact division result: sec = int(millisec / 1000) microsec = (millisec % 1000) * 1000 else: (sec, microsec) = struct.unpack('ll', binstr) return timeout(sec, microsec)
[docs] def struct_size(): # type: () -> int if sys.platform == 'win32': return struct.calcsize('l') else: return struct.calcsize('ll')