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
- DataViewManager.cs
- TextRangeBase.cs
- PropVariant.cs
- DBCSCodePageEncoding.cs
- SoapAttributeAttribute.cs
- ResourcePart.cs
- ThousandthOfEmRealPoints.cs
- VoiceObjectToken.cs
- ArraySortHelper.cs
- X509ImageLogo.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- PrintingPermissionAttribute.cs
- CompilationRelaxations.cs
- PenThreadPool.cs
- EmptyStringExpandableObjectConverter.cs
- MulticastIPAddressInformationCollection.cs
- FaultBookmark.cs
- VisualStyleInformation.cs
- EventArgs.cs
- ExtendedProtectionPolicyElement.cs
- NumberFormatter.cs
- ValueSerializerAttribute.cs
- ColumnTypeConverter.cs
- DataSourceProvider.cs
- ListCommandEventArgs.cs
- DocumentOrderQuery.cs
- indexingfiltermarshaler.cs
- SurrogateEncoder.cs
- ItemDragEvent.cs
- Serialization.cs
- SafeEventLogReadHandle.cs
- XmlHierarchicalEnumerable.cs
- RtType.cs
- XmlDocument.cs
- TypeToken.cs
- XsdDataContractExporter.cs
- QueueSurrogate.cs
- DeobfuscatingStream.cs
- UpdatePanel.cs
- Marshal.cs
- UrlAuthorizationModule.cs
- ConstantProjectedSlot.cs
- Rectangle.cs
- XsltContext.cs
- BinHexEncoder.cs
- GridViewCancelEditEventArgs.cs
- DbConnectionStringBuilder.cs
- ArcSegment.cs
- DefaultMemberAttribute.cs
- SHA512.cs
- XmlDocumentSerializer.cs
- ErrorRuntimeConfig.cs
- CustomAttributeSerializer.cs
- XsltLibrary.cs
- FixedSOMGroup.cs
- NameSpaceExtractor.cs
- X509Chain.cs
- TileModeValidation.cs
- WmlControlAdapter.cs
- DescendentsWalkerBase.cs
- Object.cs
- WriteableOnDemandStream.cs
- TextEditorTyping.cs
- DataGridViewCellConverter.cs
- CultureInfo.cs
- DataGrid.cs
- Win32Exception.cs
- NetSectionGroup.cs
- SmtpLoginAuthenticationModule.cs
- TemplateControlCodeDomTreeGenerator.cs
- DialogResultConverter.cs
- CustomErrorsSection.cs
- SmtpCommands.cs
- KeyInfo.cs
- BindingExpression.cs
- SqlMultiplexer.cs
- ObjectDataSourceMethodEventArgs.cs
- Evaluator.cs
- ProtocolElementCollection.cs
- PageBreakRecord.cs
- UrlPath.cs
- SingleObjectCollection.cs
- TextServicesPropertyRanges.cs
- HttpCookiesSection.cs
- SecurityPolicySection.cs
- WindowsGraphics2.cs
- MobileControlDesigner.cs
- TextRangeAdaptor.cs
- StateInitialization.cs
- PointLightBase.cs
- JoinTreeSlot.cs
- BamlLocalizer.cs
- Configuration.cs
- Clause.cs
- DefaultClaimSet.cs
- RuntimeHelpers.cs
- UIElementAutomationPeer.cs
- PreloadedPackages.cs
- TemplateBindingExpressionConverter.cs
- TreeNodeClickEventArgs.cs