Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- QueryableFilterRepeater.cs
- GetWinFXPath.cs
- ApplicationDirectory.cs
- ClientBuildManagerCallback.cs
- DataGridViewComponentPropertyGridSite.cs
- EditingScope.cs
- CommentGlyph.cs
- PixelShader.cs
- elementinformation.cs
- EditorAttribute.cs
- TextPattern.cs
- ScrollPattern.cs
- recordstatefactory.cs
- VirtualDirectoryMapping.cs
- DesignerVerbCollection.cs
- Menu.cs
- SchemaTableOptionalColumn.cs
- RawStylusInputCustomData.cs
- ColorDialog.cs
- DecoderExceptionFallback.cs
- HttpConfigurationSystem.cs
- XmlWriterSettings.cs
- SelectedCellsChangedEventArgs.cs
- XamlToRtfParser.cs
- PartManifestEntry.cs
- ObjectDataSourceFilteringEventArgs.cs
- Model3DGroup.cs
- RuntimeArgument.cs
- SvcMapFile.cs
- MsdtcWrapper.cs
- Parser.cs
- CompilerGlobalScopeAttribute.cs
- PrinterUnitConvert.cs
- SessionEndingEventArgs.cs
- PropertyPathWorker.cs
- IndependentAnimationStorage.cs
- BinaryCommonClasses.cs
- SmiRecordBuffer.cs
- WinEventTracker.cs
- BindingsCollection.cs
- DynamicControl.cs
- BitmapEffectDrawing.cs
- Timeline.cs
- ContainsRowNumberChecker.cs
- Condition.cs
- ListView.cs
- WinInetCache.cs
- JsonFormatReaderGenerator.cs
- Internal.cs
- PerformanceCountersElement.cs
- recordstatescratchpad.cs
- MsmqChannelFactoryBase.cs
- ToolStripManager.cs
- DbProviderSpecificTypePropertyAttribute.cs
- safex509handles.cs
- FontClient.cs
- LightweightEntityWrapper.cs
- __Error.cs
- DispatcherSynchronizationContext.cs
- DBSchemaRow.cs
- XpsFixedPageReaderWriter.cs
- Transactions.cs
- OracleBoolean.cs
- TrackingProfileManager.cs
- RoleManagerSection.cs
- QilPatternFactory.cs
- InstanceCreationEditor.cs
- ScriptingJsonSerializationSection.cs
- TranslateTransform3D.cs
- PlainXmlWriter.cs
- PolyBezierSegmentFigureLogic.cs
- WebFaultClientMessageInspector.cs
- DropAnimation.xaml.cs
- TranslateTransform3D.cs
- AsyncSerializedWorker.cs
- UInt64Storage.cs
- DocumentCollection.cs
- ColumnBinding.cs
- DynamicRenderer.cs
- HttpAsyncResult.cs
- GridView.cs
- ElementHostPropertyMap.cs
- InterleavedZipPartStream.cs
- Invariant.cs
- Stylus.cs
- TokenizerHelper.cs
- DataServiceHost.cs
- CellParagraph.cs
- FixedHighlight.cs
- NativeMethods.cs
- CustomTypeDescriptor.cs
- EncoderExceptionFallback.cs
- AdornedElementPlaceholder.cs
- EntityConnectionStringBuilderItem.cs
- EmptyEnumerator.cs
- EventLog.cs
- InlineUIContainer.cs
- AsymmetricKeyExchangeDeformatter.cs
- WebPartEditorCancelVerb.cs
- SqlProviderServices.cs