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
- DbConnectionStringCommon.cs
- localization.cs
- RuntimeCompatibilityAttribute.cs
- ProgressBarHighlightConverter.cs
- IgnoreSection.cs
- GroupBoxAutomationPeer.cs
- Pair.cs
- UrlMappingsModule.cs
- AutomationProperties.cs
- ObjectSet.cs
- ConfigurationManagerInternalFactory.cs
- HtmlLinkAdapter.cs
- DetailsViewRowCollection.cs
- OleDbRowUpdatingEvent.cs
- WhiteSpaceTrimStringConverter.cs
- DataException.cs
- COM2FontConverter.cs
- SimpleWebHandlerParser.cs
- ZipIOFileItemStream.cs
- CommunicationObject.cs
- SoapAttributeOverrides.cs
- SystemFonts.cs
- DataGridHeaderBorder.cs
- ValueOfAction.cs
- DataRelationCollection.cs
- RoutedPropertyChangedEventArgs.cs
- DesignerTransactionCloseEvent.cs
- ExpressionStringBuilder.cs
- KoreanCalendar.cs
- DelayedRegex.cs
- HtmlFormParameterWriter.cs
- ListViewDeletedEventArgs.cs
- HitTestParameters3D.cs
- Publisher.cs
- BrowserCapabilitiesFactory.cs
- Int32AnimationBase.cs
- DataGridViewRowCancelEventArgs.cs
- DiagnosticTraceSource.cs
- CodeDirectionExpression.cs
- Int32Converter.cs
- RawStylusInputCustomData.cs
- XamlStream.cs
- FontFamilyConverter.cs
- NamespaceInfo.cs
- AdornedElementPlaceholder.cs
- StorageEntityTypeMapping.cs
- SlipBehavior.cs
- URLAttribute.cs
- AddressHeaderCollectionElement.cs
- Adorner.cs
- DynamicScriptObject.cs
- WebPartTransformerAttribute.cs
- Trustee.cs
- StackSpiller.Temps.cs
- ByteAnimation.cs
- CompletionCallbackWrapper.cs
- HyperLinkColumn.cs
- Queue.cs
- typedescriptorpermission.cs
- FunctionParameter.cs
- HeaderCollection.cs
- ViewKeyConstraint.cs
- Int32RectValueSerializer.cs
- Rectangle.cs
- ProfileBuildProvider.cs
- IDReferencePropertyAttribute.cs
- TableSectionStyle.cs
- ColumnMapProcessor.cs
- SchemaRegistration.cs
- XPathNodeHelper.cs
- WebBrowserHelper.cs
- DefaultExpression.cs
- SettingsProviderCollection.cs
- PartitionResolver.cs
- DocumentGridPage.cs
- TemplateComponentConnector.cs
- IInstanceContextProvider.cs
- CodeBinaryOperatorExpression.cs
- FilteredAttributeCollection.cs
- CreateUserErrorEventArgs.cs
- Vector3dCollection.cs
- BaseAsyncResult.cs
- SerializationInfoEnumerator.cs
- LinqDataSourceValidationException.cs
- ObjectPropertyMapping.cs
- DataTemplate.cs
- DbExpressionVisitor.cs
- TdsParserSafeHandles.cs
- TabletDeviceInfo.cs
- Content.cs
- FormatConvertedBitmap.cs
- ToolStripSystemRenderer.cs
- ProgressBarHighlightConverter.cs
- FileSystemInfo.cs
- ReadingWritingEntityEventArgs.cs
- ElementProxy.cs
- RunWorkerCompletedEventArgs.cs
- VectorCollection.cs
- WindowsGraphicsCacheManager.cs
- BoundColumn.cs