private static bool TryDeserializeByteArray(IIonReader reader, Type type, IScalarConverter scalarConverter, ref object result) { if (!type.IsAssignableFrom(typeof(byte[]))) { return(false); } if (reader.CurrentType != IonType.Blob && reader.CurrentType != IonType.Clob) { return(false); } var bytes = new byte[reader.GetLobByteSize()]; reader.GetBytes(bytes); result = bytes; return(true); }
public static void Struct_OneBlob(IIonReader reader) { reader.MoveNext(); reader.StepIn(); Assert.AreEqual(IonType.Blob, reader.MoveNext()); Assert.AreEqual("blobbbb", reader.CurrentFieldName); var lobByteSize = reader.GetLobByteSize(); Assert.AreEqual(100, lobByteSize); var blob = new byte[lobByteSize]; reader.GetBytes(blob); for (var i = 0; i < 100; i++) { Assert.AreEqual((byte)1, blob[i]); } }
public static void Blob_PartialRead(int size, int step, IIonReader reader) { Assert.AreEqual(IonType.Blob, reader.MoveNext()); var start = 0; while (start < size) { var bufSize = step; if (bufSize > size - start) { bufSize = size - start; } var buffer = new byte[bufSize]; var nRead = reader.GetBytes(buffer); Assert.AreEqual(bufSize, nRead); for (var i = 0; i < bufSize; i++) { Assert.AreEqual((byte)(i + start), buffer[i]); } start += nRead; } }
/// <summary> /// Deserialize Guid value. /// </summary> /// /// <param name="reader">The Ion reader to be used for deserialization.</param> /// /// <returns>The deserialized Guid value.</returns> public override Guid Deserialize(IIonReader reader) { byte[] blob = new byte[reader.GetLobByteSize()]; reader.GetBytes(blob); return(new Guid(blob)); }
/// <summary> /// Deserialize CLOB value. /// </summary> /// /// <param name="reader">The Ion reader to be used for deserialization.</param> /// /// <returns>The deserialized CLOB value.</returns> public override string Deserialize(IIonReader reader) { byte[] clob = new byte[reader.GetLobByteSize()]; reader.GetBytes(clob); return(Encoding.UTF8.GetString(clob)); }