Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Server / System / Data / Services / Serializers / BatchWriter.cs / 1305376 / BatchWriter.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // //// Provides a base class for DataWeb services. // // // @owner [....] //--------------------------------------------------------------------- namespace System.Data.Services.Serializers { #region Namespaces. using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; #endregion Namespaces. ////// Static helper class to write responses for batch requests /// internal static class BatchWriter { ////// Writes the start of the changeset response /// /// writer to which the response needs to be written /// batch boundary /// changeset boundary internal static void WriteStartBatchBoundary(StreamWriter writer, string batchBoundary, string changesetBoundary) { WriterStartBoundary(writer, batchBoundary); writer.WriteLine( "{0}: {1}; {2}={3}", XmlConstants.HttpContentType, XmlConstants.MimeMultiPartMixed, XmlConstants.HttpMultipartBoundary, changesetBoundary); writer.WriteLine(); // NewLine to seperate the header from message } ///Write the boundary and header information. /// writer to which the response needs to be written /// host containing the value of the response headers /// content-id string that needs to be written /// boundary string that needs to be written internal static void WriteBoundaryAndHeaders(StreamWriter writer, IDataServiceHost2 host, string contentId, string boundary) { Debug.Assert(writer != null, "writer != null"); Debug.Assert(host != null, "host != null"); Debug.Assert(boundary != null, "boundary != null"); WriterStartBoundary(writer, boundary); // First write the headers to indicate that the payload below is a http request WriteHeaderValue(writer, XmlConstants.HttpContentType, XmlConstants.MimeApplicationHttp); WriteHeaderValue(writer, XmlConstants.HttpContentTransferEncoding, XmlConstants.BatchRequestContentTransferEncoding); writer.WriteLine(); // NewLine to seperate the batch headers from http headers // In error cases, we create a dummy host, which has no request header information. // Hence we need to handle the case here. writer.WriteLine("{0} {1} {2}", XmlConstants.HttpVersionInBatching, host.ResponseStatusCode, WebUtil.GetStatusCodeText(host.ResponseStatusCode)); if (null != contentId) { WriteHeaderValue(writer, XmlConstants.HttpContentID, contentId); } System.Net.WebHeaderCollection responseHeaders = host.ResponseHeaders; foreach (string header in responseHeaders.AllKeys) { WriteHeaderValue(writer, header, responseHeaders[header]); } writer.WriteLine(); // NewLine to seperate the header from message } ////// Write the end boundary /// /// writer to which the response needs to be written /// end boundary string. internal static void WriteEndBoundary(StreamWriter writer, string boundary) { writer.WriteLine("--{0}--", boundary); } ////// Write the start boundary /// /// writer to which the response needs to be written /// boundary string. private static void WriterStartBoundary(StreamWriter writer, string boundary) { writer.WriteLine("--{0}", boundary); } ////// Write the header name and value /// /// writer to which the response needs to be written /// name of the header whose value needs to be written. /// value of the header that needs to be written. private static void WriteHeaderValue(StreamWriter writer, string headerName, object headerValue) { if (headerValue != null) { string text = Convert.ToString(headerValue, System.Globalization.CultureInfo.InvariantCulture); if (!String.IsNullOrEmpty(text)) { writer.WriteLine("{0}: {1}", headerName, text); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // //// Provides a base class for DataWeb services. // // // @owner [....] //--------------------------------------------------------------------- namespace System.Data.Services.Serializers { #region Namespaces. using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; #endregion Namespaces. ////// Static helper class to write responses for batch requests /// internal static class BatchWriter { ////// Writes the start of the changeset response /// /// writer to which the response needs to be written /// batch boundary /// changeset boundary internal static void WriteStartBatchBoundary(StreamWriter writer, string batchBoundary, string changesetBoundary) { WriterStartBoundary(writer, batchBoundary); writer.WriteLine( "{0}: {1}; {2}={3}", XmlConstants.HttpContentType, XmlConstants.MimeMultiPartMixed, XmlConstants.HttpMultipartBoundary, changesetBoundary); writer.WriteLine(); // NewLine to seperate the header from message } ///Write the boundary and header information. /// writer to which the response needs to be written /// host containing the value of the response headers /// content-id string that needs to be written /// boundary string that needs to be written internal static void WriteBoundaryAndHeaders(StreamWriter writer, IDataServiceHost2 host, string contentId, string boundary) { Debug.Assert(writer != null, "writer != null"); Debug.Assert(host != null, "host != null"); Debug.Assert(boundary != null, "boundary != null"); WriterStartBoundary(writer, boundary); // First write the headers to indicate that the payload below is a http request WriteHeaderValue(writer, XmlConstants.HttpContentType, XmlConstants.MimeApplicationHttp); WriteHeaderValue(writer, XmlConstants.HttpContentTransferEncoding, XmlConstants.BatchRequestContentTransferEncoding); writer.WriteLine(); // NewLine to seperate the batch headers from http headers // In error cases, we create a dummy host, which has no request header information. // Hence we need to handle the case here. writer.WriteLine("{0} {1} {2}", XmlConstants.HttpVersionInBatching, host.ResponseStatusCode, WebUtil.GetStatusCodeText(host.ResponseStatusCode)); if (null != contentId) { WriteHeaderValue(writer, XmlConstants.HttpContentID, contentId); } System.Net.WebHeaderCollection responseHeaders = host.ResponseHeaders; foreach (string header in responseHeaders.AllKeys) { WriteHeaderValue(writer, header, responseHeaders[header]); } writer.WriteLine(); // NewLine to seperate the header from message } ////// Write the end boundary /// /// writer to which the response needs to be written /// end boundary string. internal static void WriteEndBoundary(StreamWriter writer, string boundary) { writer.WriteLine("--{0}--", boundary); } ////// Write the start boundary /// /// writer to which the response needs to be written /// boundary string. private static void WriterStartBoundary(StreamWriter writer, string boundary) { writer.WriteLine("--{0}", boundary); } ////// Write the header name and value /// /// writer to which the response needs to be written /// name of the header whose value needs to be written. /// value of the header that needs to be written. private static void WriteHeaderValue(StreamWriter writer, string headerName, object headerValue) { if (headerValue != null) { string text = Convert.ToString(headerValue, System.Globalization.CultureInfo.InvariantCulture); if (!String.IsNullOrEmpty(text)) { writer.WriteLine("{0}: {1}", headerName, text); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BamlRecordWriter.cs
- arclist.cs
- XmlNode.cs
- NumberSubstitution.cs
- TimersDescriptionAttribute.cs
- XmlJsonReader.cs
- ColumnReorderedEventArgs.cs
- BaseDataList.cs
- MissingMemberException.cs
- BitmapEffectCollection.cs
- Conditional.cs
- Trace.cs
- KeyGesture.cs
- mansign.cs
- AutoGeneratedField.cs
- RSAPKCS1SignatureFormatter.cs
- BaseComponentEditor.cs
- ParentUndoUnit.cs
- RtfToXamlReader.cs
- HTTPNotFoundHandler.cs
- PathFigure.cs
- HtmlInputImage.cs
- NativeMethods.cs
- EndpointIdentityExtension.cs
- HttpFileCollectionWrapper.cs
- TearOffProxy.cs
- DataGridViewCellEventArgs.cs
- SparseMemoryStream.cs
- SqlBuffer.cs
- SQLByte.cs
- LinqDataSourceStatusEventArgs.cs
- ToolStripItemImageRenderEventArgs.cs
- AppSettingsExpressionBuilder.cs
- PropertyGroupDescription.cs
- SingleObjectCollection.cs
- TabItemWrapperAutomationPeer.cs
- AnimationClockResource.cs
- DockPattern.cs
- ServiceNotStartedException.cs
- RtfNavigator.cs
- RegexGroupCollection.cs
- TextRunCache.cs
- MembershipUser.cs
- TimelineGroup.cs
- RemotingSurrogateSelector.cs
- _ConnectStream.cs
- TimeSpanStorage.cs
- DefaultProxySection.cs
- C14NUtil.cs
- Gdiplus.cs
- Path.cs
- TitleStyle.cs
- XmlDataCollection.cs
- Guid.cs
- GeneralTransform3DTo2DTo3D.cs
- RegexWriter.cs
- Evidence.cs
- Module.cs
- manifestimages.cs
- OrderByQueryOptionExpression.cs
- GlobalizationSection.cs
- Rotation3DAnimationBase.cs
- ActivityDesignerHelper.cs
- XmlAttributeCollection.cs
- EventToken.cs
- RuntimeArgumentHandle.cs
- NetworkInterface.cs
- XmlUnspecifiedAttribute.cs
- ProcessStartInfo.cs
- CodeStatementCollection.cs
- OleDbEnumerator.cs
- ServiceReference.cs
- TransformGroup.cs
- ColorBlend.cs
- FullTextLine.cs
- LeafCellTreeNode.cs
- _LazyAsyncResult.cs
- SecuritySessionSecurityTokenProvider.cs
- StructuredType.cs
- X509ChainPolicy.cs
- SerializationInfoEnumerator.cs
- RulePatternOps.cs
- ResourcePermissionBaseEntry.cs
- Window.cs
- FontSourceCollection.cs
- StatusBarPanel.cs
- ClientRolePrincipal.cs
- ApplicationException.cs
- MessageContractAttribute.cs
- TreeNodeBindingCollection.cs
- ConstraintStruct.cs
- AuthenticationModulesSection.cs
- ConnectionManagementElement.cs
- FontDialog.cs
- HyperLink.cs
- XPathScanner.cs
- PartitionerQueryOperator.cs
- DataServiceException.cs
- OdbcException.cs
- UnSafeCharBuffer.cs