コード例 #1
0
        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);
        }
コード例 #2
0
        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]);
            }
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
 /// <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));
 }
コード例 #5
0
 /// <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));
 }