Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Routing / System / ServiceModel / Routing / SendOperation.cs / 1305376 / SendOperation.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.ServiceModel.Routing
{
using System;
using System.Collections.Generic;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.Transactions;
using System.Runtime;
using System.Configuration;
class SendOperation
{
List endpointTraits;
int currentIndex;
bool sent;
Dictionary exceptions;
OperationContext operationContext;
Type routerContract;
public SendOperation(IEnumerable endpoints, Type routerContract, OperationContext operationContext)
{
this.operationContext = operationContext;
this.routerContract = routerContract;
this.endpointTraits = new List();
foreach (ServiceEndpoint endpoint in endpoints)
{
this.endpointTraits.Add(new RoutingEndpointTrait(routerContract, endpoint, operationContext));
}
if (this.endpointTraits.Count == 0)
{
throw FxTrace.Exception.AsError(new ConfigurationErrorsException(SR.BackupListEmpty));
}
}
public RoutingEndpointTrait CurrentEndpoint
{
get
{
Fx.Assert(this.currentIndex < this.endpointTraits.Count, "CurrentEndpoint should not be accessed after TryMoveToAlternate returned false!");
RoutingEndpointTrait trait = this.endpointTraits[this.currentIndex];
return trait;
}
}
public bool HasAlternate
{
get { return this.currentIndex < (this.endpointTraits.Count - 1); }
}
public bool Sent
{
get { return this.sent; }
}
public void PrepareMessage(Message message)
{
if (this.exceptions != null)
{
message.Properties["Exceptions"] = this.exceptions;
}
}
public void TransmitSucceeded(Transaction sendTransaction)
{
if (sendTransaction == null)
{
this.sent = true;
}
}
public bool TryMoveToAlternate(Exception exception)
{
if (this.exceptions == null)
{
this.exceptions = new Dictionary();
}
this.exceptions[this.CurrentEndpoint.Endpoint.Name] = exception;
this.sent = false;
if (++this.currentIndex < this.endpointTraits.Count)
{
return true;
}
return false;
}
}
}
// 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
- PeerNameResolver.cs
- DetectRunnableInstancesTask.cs
- SplitterDesigner.cs
- AsymmetricCryptoHandle.cs
- OutputWindow.cs
- SchemaElementDecl.cs
- PeerTransportElement.cs
- ConfigXmlReader.cs
- CompiledRegexRunnerFactory.cs
- PipeStream.cs
- OleDbConnection.cs
- ConfigXmlElement.cs
- TypeNameConverter.cs
- PeerNameRegistration.cs
- LineBreakRecord.cs
- Set.cs
- PermissionAttributes.cs
- FileUtil.cs
- UserControlCodeDomTreeGenerator.cs
- FormattedTextSymbols.cs
- WriteTimeStream.cs
- CatalogPartCollection.cs
- cryptoapiTransform.cs
- DocumentsTrace.cs
- ButtonDesigner.cs
- SQLGuid.cs
- SqlTopReducer.cs
- BaseValidator.cs
- PackageProperties.cs
- Int32CAMarshaler.cs
- VSDExceptions.cs
- StringAnimationBase.cs
- SqlDataSource.cs
- DataGridItem.cs
- TimeZoneInfo.cs
- SecurityPolicySection.cs
- RemotingClientProxy.cs
- SectionVisual.cs
- EmbeddedObject.cs
- RemoveStoryboard.cs
- PseudoWebRequest.cs
- Accessors.cs
- XmlLinkedNode.cs
- XmlElementElementCollection.cs
- UrlUtility.cs
- XmlSchemaInferenceException.cs
- ExtensibleClassFactory.cs
- DrawingCollection.cs
- ConfigXmlComment.cs
- DataGridViewColumnHeaderCell.cs
- IInstanceTable.cs
- Inflater.cs
- WeakRefEnumerator.cs
- ContextBase.cs
- ProfileManager.cs
- OptimalBreakSession.cs
- WindowsAuthenticationEventArgs.cs
- QualifiedCellIdBoolean.cs
- validationstate.cs
- FragmentQueryProcessor.cs
- HttpWebRequest.cs
- EmptyControlCollection.cs
- RelativeSource.cs
- ReachSerializableProperties.cs
- EntityDataSourceUtil.cs
- XmlLinkedNode.cs
- AssemblyBuilder.cs
- DataGridViewRowsRemovedEventArgs.cs
- WizardStepBase.cs
- XmlSchemaInclude.cs
- StreamSecurityUpgradeInitiatorBase.cs
- XPathExpr.cs
- SystemInfo.cs
- ProtocolElement.cs
- WebContentFormatHelper.cs
- ThicknessKeyFrameCollection.cs
- QuotaExceededException.cs
- WebEventTraceProvider.cs
- AsmxEndpointPickerExtension.cs
- XmlChildEnumerator.cs
- TimeoutException.cs
- StateMachine.cs
- ProxyFragment.cs
- GridLength.cs
- TypeForwardedToAttribute.cs
- ProcessProtocolHandler.cs
- SpotLight.cs
- PriorityBindingExpression.cs
- SmiMetaData.cs
- datacache.cs
- ControlHelper.cs
- Control.cs
- BaseTemplateBuildProvider.cs
- Serializer.cs
- TransformValueSerializer.cs
- SettingsPropertyValue.cs
- NetPeerTcpBinding.cs
- FacetValues.cs
- NamespaceDecl.cs
- HtmlButton.cs