Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataWeb / Server / System / Data / Services / Serializers / BatchWriter.cs / 2 / 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
- TraceListener.cs
- SchemaImporterExtension.cs
- ProfileGroupSettingsCollection.cs
- GatewayIPAddressInformationCollection.cs
- LinearKeyFrames.cs
- RelatedCurrencyManager.cs
- BindingEntityInfo.cs
- MarkedHighlightComponent.cs
- ServiceModelEnumValidatorAttribute.cs
- FolderLevelBuildProvider.cs
- LicenseProviderAttribute.cs
- Thumb.cs
- WebCategoryAttribute.cs
- PointAnimation.cs
- UshortList2.cs
- UnsafeNativeMethodsMilCoreApi.cs
- Win32Native.cs
- CursorConverter.cs
- EntryIndex.cs
- SQLByte.cs
- ReflectionPermission.cs
- ObjectQuery_EntitySqlExtensions.cs
- LinqTreeNodeEvaluator.cs
- Util.cs
- Transform3DGroup.cs
- BitmapEffectDrawingContextWalker.cs
- connectionpool.cs
- ToolStripEditorManager.cs
- UnicodeEncoding.cs
- PanningMessageFilter.cs
- FormViewRow.cs
- RelationshipDetailsRow.cs
- RemotingHelper.cs
- TaskbarItemInfo.cs
- VerbConverter.cs
- HtmlTableCellCollection.cs
- ClaimTypeElementCollection.cs
- DomNameTable.cs
- ModelToObjectValueConverter.cs
- SignedXml.cs
- SettingsPropertyValue.cs
- DataContract.cs
- SourceFilter.cs
- OperationResponse.cs
- KerberosRequestorSecurityToken.cs
- SHA1Managed.cs
- CommandEventArgs.cs
- ControlUtil.cs
- DBSchemaRow.cs
- RuntimeArgumentHandle.cs
- RTLAwareMessageBox.cs
- WinFormsSpinner.cs
- FileSecurity.cs
- CharUnicodeInfo.cs
- ELinqQueryState.cs
- RuntimeEnvironment.cs
- RelationshipWrapper.cs
- SafeRightsManagementSessionHandle.cs
- AndCondition.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- OuterProxyWrapper.cs
- CapabilitiesUse.cs
- EntryWrittenEventArgs.cs
- ImageCollectionEditor.cs
- FixedSOMTableRow.cs
- OrderedDictionary.cs
- MatrixTransform3D.cs
- StackSpiller.Bindings.cs
- HtmlProps.cs
- ProtocolElement.cs
- InheritanceContextHelper.cs
- RemotingService.cs
- HtmlInputCheckBox.cs
- Wildcard.cs
- UserControlBuildProvider.cs
- Item.cs
- WindowsListView.cs
- RelatedPropertyManager.cs
- DataDocumentXPathNavigator.cs
- SortDescriptionCollection.cs
- ChangeToolStripParentVerb.cs
- DataGridParentRows.cs
- StrokeNodeOperations.cs
- ReadWriteObjectLock.cs
- CompilationLock.cs
- listitem.cs
- GPRECT.cs
- SlotInfo.cs
- Directory.cs
- CompositeActivityCodeGenerator.cs
- CodeMemberMethod.cs
- XmlSchemaAnnotation.cs
- NumberFormatInfo.cs
- DisplayNameAttribute.cs
- GlobalizationSection.cs
- XhtmlBasicListAdapter.cs
- ProtectedConfiguration.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- AlternateView.cs
- ApplicationInfo.cs