Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataWeb / Server / System / Data / Services / Serializers / BatchWriter.cs / 1 / 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.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 /// boundary string that needs to be written internal static void WriteBoundaryAndHeaders(StreamWriter writer, IDataServiceHost host, 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)); BatchServiceHost batch = (BatchServiceHost)host; if (null != batch.ContentId) { WriteHeaderValue(writer, XmlConstants.HttpContentID, batch.ContentId); } WriteHeaderValue(writer, XmlConstants.HttpContentType, host.ResponseContentType); WriteHeaderValue(writer, XmlConstants.HttpResponseCacheControl, host.ResponseCacheControl); WriteHeaderValue(writer, XmlConstants.HttpResponseETag, host.ResponseETag); WriteHeaderValue(writer, XmlConstants.HttpResponseLocation, host.ResponseLocation); WriteHeaderValue(writer, XmlConstants.HttpDataServiceVersion, host.ResponseVersion); BatchServiceHost batchHost = host as BatchServiceHost; Debug.Assert(batchHost != null, "batchHost != null -- only batch host currently supported."); WriteHeaderValue(writer, XmlConstants.HttpResponseAllow, batchHost.ResponseAllowHeader); 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.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 /// boundary string that needs to be written internal static void WriteBoundaryAndHeaders(StreamWriter writer, IDataServiceHost host, 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)); BatchServiceHost batch = (BatchServiceHost)host; if (null != batch.ContentId) { WriteHeaderValue(writer, XmlConstants.HttpContentID, batch.ContentId); } WriteHeaderValue(writer, XmlConstants.HttpContentType, host.ResponseContentType); WriteHeaderValue(writer, XmlConstants.HttpResponseCacheControl, host.ResponseCacheControl); WriteHeaderValue(writer, XmlConstants.HttpResponseETag, host.ResponseETag); WriteHeaderValue(writer, XmlConstants.HttpResponseLocation, host.ResponseLocation); WriteHeaderValue(writer, XmlConstants.HttpDataServiceVersion, host.ResponseVersion); BatchServiceHost batchHost = host as BatchServiceHost; Debug.Assert(batchHost != null, "batchHost != null -- only batch host currently supported."); WriteHeaderValue(writer, XmlConstants.HttpResponseAllow, batchHost.ResponseAllowHeader); 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
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BrushValueSerializer.cs
- Profiler.cs
- NumberSubstitution.cs
- ImageCodecInfoPrivate.cs
- XmlNullResolver.cs
- TypeSource.cs
- AlphaSortedEnumConverter.cs
- ExpressionNormalizer.cs
- RegistryPermission.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- PreviewKeyDownEventArgs.cs
- SwitchLevelAttribute.cs
- EpmSyndicationContentDeSerializer.cs
- MsmqChannelFactory.cs
- MessageQueueEnumerator.cs
- CompressionTransform.cs
- TypeProvider.cs
- GZipStream.cs
- NodeFunctions.cs
- ConnectionManagementElement.cs
- UriTemplateEquivalenceComparer.cs
- NetNamedPipeBinding.cs
- SimpleHandlerBuildProvider.cs
- ListDictionary.cs
- ThreadStaticAttribute.cs
- MatrixAnimationUsingPath.cs
- HostedTransportConfigurationBase.cs
- StaticExtension.cs
- StringValueConverter.cs
- ModelTreeEnumerator.cs
- ImageUrlEditor.cs
- ServicePointManager.cs
- BamlMapTable.cs
- UnhandledExceptionEventArgs.cs
- FrameworkTemplate.cs
- HttpListenerResponse.cs
- InvalidProgramException.cs
- TextContainerChangedEventArgs.cs
- _SslState.cs
- RequestCachingSection.cs
- AssemblyResourceLoader.cs
- PolyLineSegment.cs
- TabPageDesigner.cs
- CommandSet.cs
- SmiSettersStream.cs
- MatrixTransform.cs
- DataGridPagingPage.cs
- RelativeSource.cs
- BaseTemplateParser.cs
- CheckBoxList.cs
- TemplateControlBuildProvider.cs
- IsolatedStorageException.cs
- ColumnWidthChangingEvent.cs
- DocumentViewerAutomationPeer.cs
- ServiceOperationParameter.cs
- PassportPrincipal.cs
- WorkflowWebService.cs
- DateTimeFormatInfoScanner.cs
- WmfPlaceableFileHeader.cs
- ContextMarshalException.cs
- ExtractedStateEntry.cs
- ButtonRenderer.cs
- WorkflowIdleElement.cs
- DomNameTable.cs
- ValueTypeFixupInfo.cs
- SqlNodeAnnotation.cs
- SHA1CryptoServiceProvider.cs
- PersonalizationEntry.cs
- SchemaTypeEmitter.cs
- CheckBoxAutomationPeer.cs
- HighlightVisual.cs
- CompositeCollection.cs
- LayoutUtils.cs
- xmlfixedPageInfo.cs
- HttpListenerRequest.cs
- CmsInterop.cs
- DllNotFoundException.cs
- DataGridViewImageColumn.cs
- AuthStoreRoleProvider.cs
- SelectedDatesCollection.cs
- PinnedBufferMemoryStream.cs
- AdCreatedEventArgs.cs
- BitmapVisualManager.cs
- VisualStyleElement.cs
- SecurityManager.cs
- BmpBitmapEncoder.cs
- WebPartConnectionsCloseVerb.cs
- TokenCreationException.cs
- PropertyBuilder.cs
- EdgeModeValidation.cs
- StubHelpers.cs
- SqlInternalConnection.cs
- TableRowGroup.cs
- DesignOnlyAttribute.cs
- HttpWebRequest.cs
- Stream.cs
- HtmlInputPassword.cs
- IndexOutOfRangeException.cs
- RawStylusInputCustomData.cs
- XmlSchemaAnnotation.cs