Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CollectionView.cs
- TreeIterator.cs
- Event.cs
- Lease.cs
- SeekStoryboard.cs
- MLangCodePageEncoding.cs
- SQLGuidStorage.cs
- CreatingCookieEventArgs.cs
- DataKey.cs
- AuthenticationConfig.cs
- DataColumn.cs
- PackUriHelper.cs
- CompensatableTransactionScopeActivityDesigner.cs
- SendAgentStatusRequest.cs
- CardSpaceSelector.cs
- Operator.cs
- ProxyWebPartConnectionCollection.cs
- DefaultExpressionVisitor.cs
- ReadOnlyCollectionBase.cs
- SessionStateModule.cs
- WebPartZone.cs
- StatusBar.cs
- MultiSelectRootGridEntry.cs
- DispatcherHooks.cs
- ExclusiveCanonicalizationTransform.cs
- XmlQueryCardinality.cs
- BitmapSourceSafeMILHandle.cs
- XmlNodeReader.cs
- ContentType.cs
- ExtendedProtectionPolicyTypeConverter.cs
- TextFormatter.cs
- TreeNodeBindingCollection.cs
- Domain.cs
- COM2Properties.cs
- WrappedIUnknown.cs
- PasswordRecoveryAutoFormat.cs
- ResetableIterator.cs
- XamlFrame.cs
- EntityViewGenerationConstants.cs
- ErrorWrapper.cs
- ImageListStreamer.cs
- ChangeInterceptorAttribute.cs
- PKCS1MaskGenerationMethod.cs
- HtmlControl.cs
- TreeNodeStyle.cs
- ListBindingConverter.cs
- WindowShowOrOpenTracker.cs
- OpacityConverter.cs
- SpecularMaterial.cs
- CatalogPart.cs
- LineInfo.cs
- VarRemapper.cs
- ItemCheckEvent.cs
- ScaleTransform3D.cs
- UInt16Converter.cs
- CreateUserWizardStep.cs
- DesignSurfaceEvent.cs
- LinqToSqlWrapper.cs
- EmulateRecognizeCompletedEventArgs.cs
- QueryReaderSettings.cs
- RadioButtonList.cs
- ReadContentAsBinaryHelper.cs
- TransformCryptoHandle.cs
- DiffuseMaterial.cs
- ConfigurationManagerHelper.cs
- DataBoundControl.cs
- Region.cs
- FolderLevelBuildProvider.cs
- DesignerInterfaces.cs
- ObjectCache.cs
- ObjectItemNoOpAssemblyLoader.cs
- ClientConfigPaths.cs
- AsyncCodeActivityContext.cs
- UIntPtr.cs
- AutomationPattern.cs
- CodeAccessPermission.cs
- TableLayoutStyle.cs
- TypeValidationEventArgs.cs
- SqlDeflator.cs
- ProgressPage.cs
- OleDbMetaDataFactory.cs
- DoubleCollection.cs
- TickBar.cs
- EntityDataSourceState.cs
- DescendentsWalker.cs
- DocumentsTrace.cs
- ApplicationManager.cs
- _IPv6Address.cs
- Errors.cs
- CompiledAction.cs
- GlobalAllocSafeHandle.cs
- AppearanceEditorPart.cs
- ParseElementCollection.cs
- ChannelSinkStacks.cs
- Cursors.cs
- LayoutTable.cs
- CultureInfo.cs
- FillErrorEventArgs.cs
- PageVisual.cs
- SectionUpdates.cs