e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
93 lines
3.6 KiB
C#
93 lines
3.6 KiB
C#
//------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//------------------------------------------------------------
|
|
namespace System.ServiceModel.Dispatcher
|
|
{
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.ServiceModel.Channels;
|
|
using System.ServiceModel.Persistence;
|
|
using System.Threading;
|
|
using System.ServiceModel.Description;
|
|
using System.ServiceModel.Diagnostics;
|
|
using System.Diagnostics;
|
|
using System.Runtime.Diagnostics;
|
|
|
|
class ServiceDurableInstanceContextProvider : DurableInstanceContextProvider
|
|
{
|
|
TimeSpan operationTimeout;
|
|
PersistenceProviderFactory providerFactory;
|
|
DurableRuntimeValidator runtimeValidator;
|
|
bool saveStateInOperationTransaction;
|
|
Type serviceType;
|
|
UnknownExceptionAction unknownExceptionAction;
|
|
|
|
public ServiceDurableInstanceContextProvider(
|
|
ServiceHostBase serviceHostBase,
|
|
bool isPercall,
|
|
Type serviceType,
|
|
PersistenceProviderFactory providerFactory,
|
|
bool saveStateInOperationTransaction,
|
|
UnknownExceptionAction unknownExceptionAction,
|
|
DurableRuntimeValidator runtimeValidator,
|
|
TimeSpan operationTimeout)
|
|
: base(serviceHostBase, isPercall)
|
|
{
|
|
if (serviceType == null)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("serviceType");
|
|
}
|
|
|
|
if (providerFactory == null)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("providerFactory");
|
|
}
|
|
|
|
if (runtimeValidator == null)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("runtimeValidator");
|
|
}
|
|
|
|
this.serviceType = serviceType;
|
|
this.providerFactory = providerFactory;
|
|
this.saveStateInOperationTransaction = saveStateInOperationTransaction;
|
|
this.unknownExceptionAction = unknownExceptionAction;
|
|
this.runtimeValidator = runtimeValidator;
|
|
this.operationTimeout = operationTimeout;
|
|
}
|
|
|
|
protected override DurableInstance OnCreateNewInstance(Guid instanceId)
|
|
{
|
|
if (DiagnosticUtility.ShouldTraceInformation)
|
|
{
|
|
string traceText = SR2.GetString(SR2.InstanceContextProviderCreatedNewInstance, "Service", instanceId);
|
|
TraceUtility.TraceEvent(TraceEventType.Information,
|
|
TraceCode.ActivatingMessageReceived, SR.GetString(SR.TraceCodeActivatingMessageReceived),
|
|
new StringTraceRecord("NewInstanceDetail", traceText),
|
|
this, null);
|
|
}
|
|
|
|
return new ServiceDurableInstance(
|
|
this.providerFactory.CreateProvider(instanceId),
|
|
this,
|
|
this.saveStateInOperationTransaction,
|
|
this.unknownExceptionAction,
|
|
this.runtimeValidator,
|
|
this.operationTimeout,
|
|
this.serviceType);
|
|
}
|
|
|
|
protected override DurableInstance OnGetExistingInstance(Guid instanceId)
|
|
{
|
|
return new ServiceDurableInstance(
|
|
this.providerFactory.CreateProvider(instanceId),
|
|
this,
|
|
this.saveStateInOperationTransaction,
|
|
this.unknownExceptionAction,
|
|
this.runtimeValidator,
|
|
this.operationTimeout);
|
|
}
|
|
}
|
|
}
|