protected internal Stream GetStream(Func <Stream> messageStreamFunc, bool isRequest) { if (!this.writing) { Microsoft.Data.OData.BufferingReadStream stream = this.TryGetBufferingReadStream(); if (stream != null) { return(stream); } } Stream bufferingReadStream = messageStreamFunc(); ValidateMessageStream(bufferingReadStream, isRequest); bool flag = !this.writing && (this.maxMessageSize > 0L); if (this.disableMessageStreamDisposal && flag) { bufferingReadStream = MessageStreamWrapper.CreateNonDisposingStreamWithMaxSize(bufferingReadStream, this.maxMessageSize); } else if (this.disableMessageStreamDisposal) { bufferingReadStream = MessageStreamWrapper.CreateNonDisposingStream(bufferingReadStream); } else if (flag) { bufferingReadStream = MessageStreamWrapper.CreateStreamWithMaxSize(bufferingReadStream, this.maxMessageSize); } if (!this.writing && (this.useBufferingReadStream == true)) { this.bufferingReadStream = new Microsoft.Data.OData.BufferingReadStream(bufferingReadStream); bufferingReadStream = this.bufferingReadStream; } return(bufferingReadStream); }
protected internal Stream GetStream(Func<Stream> messageStreamFunc, bool isRequest) { if (!this.writing) { Microsoft.Data.OData.BufferingReadStream stream = this.TryGetBufferingReadStream(); if (stream != null) { return stream; } } Stream bufferingReadStream = messageStreamFunc(); ValidateMessageStream(bufferingReadStream, isRequest); bool flag = !this.writing && (this.maxMessageSize > 0L); if (this.disableMessageStreamDisposal && flag) { bufferingReadStream = MessageStreamWrapper.CreateNonDisposingStreamWithMaxSize(bufferingReadStream, this.maxMessageSize); } else if (this.disableMessageStreamDisposal) { bufferingReadStream = MessageStreamWrapper.CreateNonDisposingStream(bufferingReadStream); } else if (flag) { bufferingReadStream = MessageStreamWrapper.CreateStreamWithMaxSize(bufferingReadStream, this.maxMessageSize); } if (!this.writing && (this.useBufferingReadStream == true)) { this.bufferingReadStream = new Microsoft.Data.OData.BufferingReadStream(bufferingReadStream); bufferingReadStream = this.bufferingReadStream; } return bufferingReadStream; }
protected internal Task <Stream> GetStreamAsync(Func <Task <Stream> > streamFuncAsync, bool isRequest) { Func <Task <Stream>, Stream> operation = null; if (!this.writing) { Stream stream = this.TryGetBufferingReadStream(); if (stream != null) { return(TaskUtils.GetCompletedTask <Stream>(stream)); } } Task <Stream> task = streamFuncAsync(); ValidateMessageStreamTask(task, isRequest); task = task.FollowOnSuccessWith <Stream, Stream>(delegate(Task <Stream> streamTask) { Stream result = streamTask.Result; ValidateMessageStream(result, isRequest); bool flag = !this.writing && (this.maxMessageSize > 0L); if (this.disableMessageStreamDisposal && flag) { return(MessageStreamWrapper.CreateNonDisposingStreamWithMaxSize(result, this.maxMessageSize)); } if (this.disableMessageStreamDisposal) { return(MessageStreamWrapper.CreateNonDisposingStream(result)); } if (flag) { result = MessageStreamWrapper.CreateStreamWithMaxSize(result, this.maxMessageSize); } return(result); }); if (this.writing) { return(task); } task = task.FollowOnSuccessWithTask <Stream, BufferedReadStream>(streamTask => BufferedReadStream.BufferStreamAsync(streamTask.Result)).FollowOnSuccessWith <BufferedReadStream, Stream>(streamTask => streamTask.Result); if (this.useBufferingReadStream != true) { return(task); } if (operation == null) { operation = delegate(Task <Stream> streamTask) { Stream result = streamTask.Result; this.bufferingReadStream = new Microsoft.Data.OData.BufferingReadStream(result); return(this.bufferingReadStream); }; } return(task.FollowOnSuccessWith <Stream, Stream>(operation)); }
private Microsoft.Data.OData.BufferingReadStream TryGetBufferingReadStream() { if (this.bufferingReadStream == null) { return(null); } Microsoft.Data.OData.BufferingReadStream bufferingReadStream = this.bufferingReadStream; if (this.bufferingReadStream.IsBuffering) { this.bufferingReadStream.ResetStream(); return(bufferingReadStream); } this.bufferingReadStream = null; return(bufferingReadStream); }
protected internal Task<Stream> GetStreamAsync(Func<Task<Stream>> streamFuncAsync, bool isRequest) { Func<Task<Stream>, Stream> operation = null; if (!this.writing) { Stream stream = this.TryGetBufferingReadStream(); if (stream != null) { return TaskUtils.GetCompletedTask<Stream>(stream); } } Task<Stream> task = streamFuncAsync(); ValidateMessageStreamTask(task, isRequest); task = task.FollowOnSuccessWith<Stream, Stream>(delegate (Task<Stream> streamTask) { Stream result = streamTask.Result; ValidateMessageStream(result, isRequest); bool flag = !this.writing && (this.maxMessageSize > 0L); if (this.disableMessageStreamDisposal && flag) { return MessageStreamWrapper.CreateNonDisposingStreamWithMaxSize(result, this.maxMessageSize); } if (this.disableMessageStreamDisposal) { return MessageStreamWrapper.CreateNonDisposingStream(result); } if (flag) { result = MessageStreamWrapper.CreateStreamWithMaxSize(result, this.maxMessageSize); } return result; }); if (this.writing) { return task; } task = task.FollowOnSuccessWithTask<Stream, BufferedReadStream>(streamTask => BufferedReadStream.BufferStreamAsync(streamTask.Result)).FollowOnSuccessWith<BufferedReadStream, Stream>(streamTask => streamTask.Result); if (this.useBufferingReadStream != true) { return task; } if (operation == null) { operation = delegate (Task<Stream> streamTask) { Stream result = streamTask.Result; this.bufferingReadStream = new Microsoft.Data.OData.BufferingReadStream(result); return this.bufferingReadStream; }; } return task.FollowOnSuccessWith<Stream, Stream>(operation); }
private Microsoft.Data.OData.BufferingReadStream TryGetBufferingReadStream() { if (this.bufferingReadStream == null) { return null; } Microsoft.Data.OData.BufferingReadStream bufferingReadStream = this.bufferingReadStream; if (this.bufferingReadStream.IsBuffering) { this.bufferingReadStream.ResetStream(); return bufferingReadStream; } this.bufferingReadStream = null; return bufferingReadStream; }