Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Server / System / Data / Services / DataServiceOperationContext.cs / 1458001 / DataServiceOperationContext.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Class holding all the context about the current request being
// processed.
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services
{
#region Namespaces
using System;
using System.Diagnostics;
using System.Net;
#endregion Namespaces
///
/// Class holding all the context about the current operation being processed.
///
public sealed class DataServiceOperationContext
{
#region Private Fields
///
/// Host interface for the current operation.
///
private readonly IDataServiceHost hostInterface;
///
/// Host wrapper for the current operation. The wrapper class caches the request header values and validates the data from the host interface.
///
private DataServiceHostWrapper hostWrapper;
///
/// True if the current operation is part of a batch request.
///
private bool? isBatchRequest;
#endregion Private Fields
#region Constructor
///
/// Constructs a new instance of DataServiceOperationContext object
///
/// Host instance for the current operation context.
internal DataServiceOperationContext(IDataServiceHost host)
{
Debug.Assert(host != null, "host != null");
this.hostInterface = host;
}
///
/// Constructs a new instance of DataServiceOperationContext object
///
/// True if the current operation is part of a batch request.
/// Host instance for the current operation context.
internal DataServiceOperationContext(bool isBatchRequest, IDataServiceHost2 host)
: this(host)
{
this.isBatchRequest = isBatchRequest;
}
#endregion Constructor
#region Public Properties
///
/// True if the current operation is part of a batch request.
///
public bool IsBatchRequest
{
get
{
if (!this.isBatchRequest.HasValue)
{
string[] segments = RequestUriProcessor.EnumerateSegments(this.AbsoluteRequestUri, this.AbsoluteServiceUri);
if (segments.Length > 0 && segments[0] == XmlConstants.UriBatchSegment)
{
this.isBatchRequest = true;
}
else
{
this.isBatchRequest = false;
}
}
return this.isBatchRequest.Value;
}
}
///
/// The HTTP request method (GET, POST, etc.)
///
public string RequestMethod
{
get { return this.hostWrapper.RequestHttpMethod; }
}
///
/// Request Uri for the current operation.
///
public Uri AbsoluteRequestUri
{
get { return this.hostWrapper.AbsoluteRequestUri; }
}
///
/// Base service Uri for the request.
///
public Uri AbsoluteServiceUri
{
get { return this.hostWrapper.AbsoluteServiceUri; }
}
///
/// Request headers for the current operation.
///
public WebHeaderCollection RequestHeaders
{
get { return this.hostWrapper.RequestHeaders; }
}
///
/// Response headers for the current operation.
///
public WebHeaderCollection ResponseHeaders
{
get { return this.hostWrapper.ResponseHeaders; }
}
///
/// Gets and sets the response status code
///
public int ResponseStatusCode
{
get { return this.hostWrapper.ResponseStatusCode; }
set { this.hostWrapper.ResponseStatusCode = value; }
}
#endregion Public Properties
#region Internal Properties
///
/// Host instance for the current operation.
///
internal DataServiceHostWrapper Host
{
get
{
Debug.Assert(this.hostWrapper != null, "Must call InitializeAndCacheHeaders() before calling the Host property.");
return this.hostWrapper;
}
}
#endregion Internal Properties
#region Internal Methods
///
/// Creates a new instance of the host wrapper to cache the request headers and to validate the data from the host interface.
///
internal void InitializeAndCacheHeaders()
{
Debug.Assert(this.hostInterface != null, "this.hostInterface != null");
this.hostWrapper = new DataServiceHostWrapper(this.hostInterface);
}
#endregion Internal Methods
}
}
// 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
- ApplicationHost.cs
- ForwardPositionQuery.cs
- parserscommon.cs
- DBSqlParserColumn.cs
- xamlnodes.cs
- WinEventTracker.cs
- WindowsSecurityTokenAuthenticator.cs
- CacheChildrenQuery.cs
- DetailsViewModeEventArgs.cs
- WorkflowMarkupSerializerMapping.cs
- HMACSHA512.cs
- StringComparer.cs
- ZipIOCentralDirectoryFileHeader.cs
- ImageFormatConverter.cs
- PersonalizableTypeEntry.cs
- BufferedOutputAsyncStream.cs
- DebugTraceHelper.cs
- LinearKeyFrames.cs
- SubMenuStyleCollectionEditor.cs
- SQLInt64Storage.cs
- _SSPISessionCache.cs
- NamespaceQuery.cs
- NameService.cs
- Util.cs
- Panel.cs
- Baml2006KnownTypes.cs
- RelatedCurrencyManager.cs
- StringWriter.cs
- PointAnimationUsingPath.cs
- DataSourceSelectArguments.cs
- PreProcessInputEventArgs.cs
- DtdParser.cs
- ValueProviderWrapper.cs
- MouseActionValueSerializer.cs
- AssemblyGen.cs
- HandleScope.cs
- PeerInvitationResponse.cs
- DataRecordInternal.cs
- AuthenticationModuleElementCollection.cs
- ConsoleKeyInfo.cs
- CommandHelpers.cs
- ContractMapping.cs
- ExtendedProtectionPolicyTypeConverter.cs
- CacheRequest.cs
- ListBase.cs
- BindingContext.cs
- OleDbInfoMessageEvent.cs
- FlowDocumentScrollViewer.cs
- DataGridRow.cs
- Size3DConverter.cs
- RequestCacheValidator.cs
- FormClosedEvent.cs
- GlobalItem.cs
- StickyNote.cs
- DataGridViewRowHeaderCell.cs
- WorkflowQueueInfo.cs
- SymmetricSecurityProtocolFactory.cs
- TransformerInfo.cs
- TagMapInfo.cs
- DiscoveryReferences.cs
- DataSourceCache.cs
- DrawingGroup.cs
- AuthenticationService.cs
- InkCanvasInnerCanvas.cs
- UrlRoutingModule.cs
- Point4DConverter.cs
- QfeChecker.cs
- DataBoundControlAdapter.cs
- ByteAnimationUsingKeyFrames.cs
- NumberEdit.cs
- OleDbStruct.cs
- SrgsSemanticInterpretationTag.cs
- XmlIncludeAttribute.cs
- BitmapMetadataEnumerator.cs
- MultilineStringEditor.cs
- StrokeCollection.cs
- ExpressionLexer.cs
- UdpTransportBindingElement.cs
- KnownTypesProvider.cs
- StylusSystemGestureEventArgs.cs
- BindingFormattingDialog.cs
- StyleTypedPropertyAttribute.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- ChineseLunisolarCalendar.cs
- ConcurrentBag.cs
- DataGridColumn.cs
- RNGCryptoServiceProvider.cs
- OleDbParameter.cs
- SpellerHighlightLayer.cs
- NetPeerTcpBinding.cs
- RayHitTestParameters.cs
- EncodingDataItem.cs
- WebZoneDesigner.cs
- DeviceSpecificDialogCachedState.cs
- MailAddress.cs
- HttpDictionary.cs
- ArraySortHelper.cs
- Accessible.cs
- HierarchicalDataBoundControl.cs
- TimeSpan.cs