Ejemplo n.º 1
0
 internal async Task SerializeAsync(XmlDictionaryWriter writer, object[] parameters, object returnValue)
 {
     Stream streamValue = await GetStreamAndWriteStartWrapperIfNecessaryAsync(writer, parameters, returnValue);
     var streamProvider = new OperationStreamProvider(streamValue);
     await StreamFormatterHelper.WriteValueAsync(writer, streamProvider);
     await WriteEndWrapperIfNecessaryAsync(writer);
 }
Ejemplo n.º 2
0
 internal void Serialize(XmlDictionaryWriter writer, object[] parameters, object returnValue)
 {
     Stream streamValue = GetStreamAndWriteStartWrapperIfNecessary(writer, parameters, returnValue);
     var streamProvider = new OperationStreamProvider(streamValue);
     StreamFormatterHelper.WriteValue(writer, streamProvider);
     WriteEndWrapperIfNecessary(writer);
 }
Ejemplo n.º 3
0
        internal void Serialize(XmlDictionaryWriter writer, object[] parameters, object returnValue)
        {
            Stream streamValue    = GetStreamAndWriteStartWrapperIfNecessary(writer, parameters, returnValue);
            var    streamProvider = new OperationStreamProvider(streamValue);

            StreamFormatterHelper.WriteValue(writer, streamProvider);
            WriteEndWrapperIfNecessary(writer);
        }
Ejemplo n.º 4
0
        internal async Task SerializeAsync(XmlDictionaryWriter writer, object[] parameters, object returnValue)
        {
            Stream streamValue = await GetStreamAndWriteStartWrapperIfNecessaryAsync(writer, parameters, returnValue);

            var streamProvider = new OperationStreamProvider(streamValue);
            await StreamFormatterHelper.WriteValueAsync(writer, streamProvider);

            await WriteEndWrapperIfNecessaryAsync(writer);
        }
Ejemplo n.º 5
0
 internal async Task SerializeAsync(XmlDictionaryWriter writer, object[] parameters, object returnValue)
 {
     using (TaskHelpers.RunTaskContinuationsOnOurThreads()) // If inner stream doesn't have sync implementation, don't continue on thread pool.
     {
         // TODO: For NetStandard 2.0, use async methods on writer
         Stream streamValue    = GetStreamAndWriteStartWrapperIfNecessary(writer, parameters, returnValue);
         var    streamProvider = new OperationStreamProvider(streamValue);
         await StreamFormatterHelper.WriteValueAsync(writer, streamProvider);
         await WriteEndWrapperIfNecessaryAsync(writer);
     }
 }
Ejemplo n.º 6
0
            public static async Task WriteValueAsync(XmlDictionaryWriter writer, OperationStreamProvider value)
            {
                if (value == null)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value"));
                }

                Stream stream = value.GetStream();

                if (stream == null)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.Format(SR.XmlInvalidStream)));
                }

                int blockSize = 256;
                int bytesRead = 0;

                byte[] block = new byte[blockSize];
                while (true)
                {
                    bytesRead = await stream.ReadAsync(block, 0, blockSize);

                    if (bytesRead > 0)
                    {
                        // XmlDictionaryWriter has not implemented WriteBase64Async() yet.
                        writer.WriteBase64(block, 0, bytesRead);
                    }
                    else
                    {
                        break;
                    }

                    if (blockSize < 65536 && bytesRead == blockSize)
                    {
                        blockSize = blockSize * 16;
                        block     = new byte[blockSize];
                    }
                }

                value.ReleaseStream(stream);
            }
Ejemplo n.º 7
0
            // The method was duplicated from the desktop implementation of
            // System.Xml.XmlDictionaryWriter.WriteValue(IStreamProvider)
            public static void WriteValue(XmlDictionaryWriter writer, OperationStreamProvider value)
            {
                if (value == null)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value));
                }

                Stream stream = value.GetStream();

                if (stream == null)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.Format(SR.XmlInvalidStream)));
                }

                int blockSize = 256;
                int bytesRead = 0;

                byte[] block = new byte[blockSize];
                while (true)
                {
                    bytesRead = stream.Read(block, 0, blockSize);
                    if (bytesRead > 0)
                    {
                        writer.WriteBase64(block, 0, bytesRead);
                    }
                    else
                    {
                        break;
                    }

                    if (blockSize < 65536 && bytesRead == blockSize)
                    {
                        blockSize = blockSize * 16;
                        block     = new byte[blockSize];
                    }
                }

                value.ReleaseStream(stream);
            }
Ejemplo n.º 8
0
            public static async Task WriteValueAsync(XmlDictionaryWriter writer, OperationStreamProvider value)
            {
                if (value == null)
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value"));

                Stream stream = value.GetStream();
                if (stream == null)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.Format(SR.XmlInvalidStream)));
                }

                int blockSize = 256;
                int bytesRead = 0;
                byte[] block = new byte[blockSize];
                while (true)
                {
                    bytesRead = await stream.ReadAsync(block, 0, blockSize);
                    if (bytesRead > 0)
                    {
                        // XmlDictionaryWriter has not implemented WriteBase64Async() yet.
                        writer.WriteBase64(block, 0, bytesRead);
                    }
                    else
                    {
                        break;
                    }

                    if (blockSize < 65536 && bytesRead == blockSize)
                    {
                        blockSize = blockSize * 16;
                        block = new byte[blockSize];
                    }
                }

                value.ReleaseStream(stream);
            }