Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------- //// 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
- CollectionsUtil.cs
- FindCriteria.cs
- LongPath.cs
- UnsafeNativeMethods.cs
- TrackingWorkflowEventArgs.cs
- MimeParameterWriter.cs
- TdsRecordBufferSetter.cs
- MarshalByValueComponent.cs
- TextRunProperties.cs
- ConfigXmlAttribute.cs
- CodeAccessSecurityEngine.cs
- selecteditemcollection.cs
- MergeFilterQuery.cs
- ColorConvertedBitmap.cs
- ConfigXmlAttribute.cs
- ComboBox.cs
- ILGenerator.cs
- Rect.cs
- WebPartVerbsEventArgs.cs
- MonitoringDescriptionAttribute.cs
- _LazyAsyncResult.cs
- MonthCalendarDesigner.cs
- ApplicationException.cs
- ConstNode.cs
- DockingAttribute.cs
- TypeContext.cs
- StorageFunctionMapping.cs
- DeclaredTypeValidatorAttribute.cs
- TextFormatterImp.cs
- EncodingFallbackAwareXmlTextWriter.cs
- SequentialOutput.cs
- StructuredCompositeActivityDesigner.cs
- UrlMappingCollection.cs
- ListGeneralPage.cs
- LocalizationComments.cs
- Literal.cs
- ExpandedWrapper.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- EncryptedPackage.cs
- ResourceReferenceExpression.cs
- JoinElimination.cs
- EventProvider.cs
- RelatedImageListAttribute.cs
- Privilege.cs
- OleDbConnection.cs
- XComponentModel.cs
- CookieParameter.cs
- ObservableCollection.cs
- ColumnHeaderConverter.cs
- CheckBoxPopupAdapter.cs
- AttachedProperty.cs
- PropertyDescriptorGridEntry.cs
- NumberFormatInfo.cs
- Inline.cs
- BaseUriHelper.cs
- ResourcesGenerator.cs
- ProviderUtil.cs
- InputScopeNameConverter.cs
- OleDbConnection.cs
- wgx_render.cs
- SmtpFailedRecipientsException.cs
- CodeValidator.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- XmlMembersMapping.cs
- WindowsContainer.cs
- ReferencedType.cs
- ChannelServices.cs
- ReceiveSecurityHeaderEntry.cs
- CharacterBufferReference.cs
- Viewport2DVisual3D.cs
- LassoSelectionBehavior.cs
- UpdateDelegates.Generated.cs
- Button.cs
- ImageAttributes.cs
- RequestBringIntoViewEventArgs.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- HeaderedItemsControl.cs
- ActivityCodeDomSerializationManager.cs
- CodePageUtils.cs
- DetailsViewInsertEventArgs.cs
- PhysicalFontFamily.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- DataMemberConverter.cs
- MergeLocalizationDirectives.cs
- SelectedDatesCollection.cs
- Debugger.cs
- Restrictions.cs
- RegistrationServices.cs
- RecognizerInfo.cs
- MsmqIntegrationSecurityElement.cs
- Interfaces.cs
- MediaTimeline.cs
- MissingSatelliteAssemblyException.cs
- DeclarativeCatalogPart.cs
- IDQuery.cs
- ProtocolsConfigurationEntry.cs
- NameNode.cs
- FontCacheLogic.cs
- DataGridSortCommandEventArgs.cs
- DataGridSortCommandEventArgs.cs