def getScaledTime(self): """Read the next Scaled Time value off the session.""" typeCode = self._getTypeCode() if typeCode in range(protocol.SCALEDTIMELEN1, protocol.SCALEDTIMELEN8 + 1): scale = fromByteString(self._takeBytes(1)) time = fromByteString(self._takeBytes(typeCode - 208)) ticks = decimal.Decimal(str(time)) / decimal.Decimal(10**scale) return datatype.TimeFromTicks(round(int(ticks)), int((ticks % 1) * decimal.Decimal(1000000))) raise DataError('Not a scaled time')
def getScaledTime(self): """Read the next Scaled Time value off the session.""" typeCode = self._getTypeCode() if typeCode in range(protocol.SCALEDTIMELEN1, protocol.SCALEDTIMELEN8 + 1): scale = fromByteString(self._takeBytes(1)) time = fromByteString(self._takeBytes(typeCode - 208)) ticks = decimal.Decimal(str(time)) / decimal.Decimal(10**scale) return datatype.TimeFromTicks( round(int(ticks)), int((ticks % 1) * decimal.Decimal(1000000))) raise DataError('Not a scaled time')
def getClob(self): """Read the next Clob(Character Large OBject) value off the session.""" typeCode = self._getTypeCode() if typeCode in range(protocol.CLOBLEN0, protocol.CLOBLEN4 + 1): strLength = fromByteString(self._takeBytes(typeCode - 194)) return self._takeBytes(strLength) raise DataError('Not a clob')
def getBlob(self): """Read the next Blob(Binary Large OBject) value off the session.""" typeCode = self._getTypeCode() if typeCode in range(protocol.BLOBLEN0, protocol.BLOBLEN4 + 1): strLength = fromByteString(self._takeBytes(typeCode - 189)) return datatype.Binary(self._takeBytes(strLength)) raise DataError('Not a blob')
def getScaledInt(self): """Read the next Scaled Integer value off the session.""" typeCode = self._getTypeCode() if typeCode in range(protocol.SCALEDLEN0, protocol.SCALEDLEN8 + 1): scale = fromByteString(self._takeBytes(1)) value = fromSignedByteString(self._takeBytes(typeCode - 60)) return decimal.Decimal(value) / decimal.Decimal(10**scale) raise DataError('Not a scaled integer')
def getScaledDate(self): """Read the next Scaled Date value off the session.""" typeCode = self._getTypeCode() if typeCode in range(protocol.SCALEDDATELEN1, protocol.SCALEDDATELEN8 + 1): scale = fromByteString(self._takeBytes(1)) date = fromSignedByteString(self._takeBytes(typeCode - 200)) return datatype.DateFromTicks(round(date/10.0**scale)) raise DataError('Not a scaled date')
def getScaledDate(self): """Read the next Scaled Date value off the session.""" typeCode = self._getTypeCode() if typeCode in range(protocol.SCALEDDATELEN1, protocol.SCALEDDATELEN8 + 1): scale = fromByteString(self._takeBytes(1)) date = fromSignedByteString(self._takeBytes(typeCode - 200)) return datatype.DateFromTicks(round(date / 10.0**scale)) raise DataError('Not a scaled date')
def getOpaque(self): """Read the next Opaque value off the session.""" typeCode = self._getTypeCode() if typeCode in range(protocol.OPAQUELEN0, protocol.OPAQUELEN39 + 1): return datatype.Binary(self._takeBytes(typeCode - 149)) if typeCode in range(protocol.OPAQUECOUNT1, protocol.OPAQUECOUNT4 + 1): strLength = fromByteString(self._takeBytes(typeCode - 72)) return datatype.Binary(self._takeBytes(strLength)) raise DataError('Not an opaque value')
def getString(self): """Read the next String off the session.""" typeCode = self._getTypeCode() if typeCode in range(protocol.UTF8LEN0, protocol.UTF8LEN39 + 1): return self._takeBytes(typeCode - 109) if typeCode in range(protocol.UTF8COUNT1, protocol.UTF8COUNT4 + 1): strLength = fromByteString(self._takeBytes(typeCode - 68)) return self._takeBytes(strLength) raise DataError('Not a string')
def getScaledInt(self): """Read the next Scaled Integer value off the session.""" typeCode = self._getTypeCode() if typeCode in range(protocol.SCALEDLEN0, protocol.SCALEDLEN8 + 1): scale = fromByteString(self._takeBytes(1)) value = fromSignedByteString(self._takeBytes(typeCode - 60)) # preserves Decimal sign, exp, int... sign = 1 if value < 0 else 0 value = tuple(int(i) for i in str(abs(value))) return decimal.Decimal((sign, value, -1 * scale)) raise DataError('Not a scaled integer')
def getTime(self): """Read the next Time value off the session.""" typeCode = self._getTypeCode() if typeCode in range(protocol.MILLISECLEN0, protocol.MILLISECLEN8 + 1): return fromSignedByteString(self._takeBytes(typeCode - 86)) if typeCode in range(protocol.NANOSECLEN0, protocol.NANOSECLEN8 + 1): return fromSignedByteString(self._takeBytes(typeCode - 95)) if typeCode in range(protocol.TIMELEN0, protocol.TIMELEN4 + 1): return fromByteString(self._takeBytes(typeCode - 104)) raise DataError('Not a time')