1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------
namespace System.ServiceModel.Dispatcher
{
using System.Runtime;
using System.ServiceModel.Channels;
using System.ServiceModel.Persistence;
abstract class DurableInstance : CommunicationObject, IExtension<InstanceContext>
{
DurableInstanceContextProvider instanceContextProvider;
Guid instanceId;
protected DurableInstance(DurableInstanceContextProvider instanceContextProvider, Guid instanceId)
{
if (instanceContextProvider == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("instanceContextProvider");
}
this.instanceId = instanceId;
this.instanceContextProvider = instanceContextProvider;
}
public Guid InstanceId
{
get
{
return this.instanceId;
}
}
protected override TimeSpan DefaultCloseTimeout
{
get { return PersistenceProvider.DefaultOpenClosePersistenceTimout; }
}
protected override TimeSpan DefaultOpenTimeout
{
get { return PersistenceProvider.DefaultOpenClosePersistenceTimout; }
}
public void DecrementActivityCount()
{
instanceContextProvider.DecrementActivityCount(this.instanceId);
}
void IExtension<InstanceContext>.Attach(InstanceContext owner)
{
}
void IExtension<InstanceContext>.Detach(InstanceContext owner)
{
}
protected override void OnAbort()
{
}
protected override IAsyncResult OnBeginClose(TimeSpan timeout, AsyncCallback callback, object state)
{
return new CompletedAsyncResult(callback, state);
}
protected override IAsyncResult OnBeginOpen(TimeSpan timeout, AsyncCallback callback, object state)
{
return new CompletedAsyncResult(callback, state);
}
protected override void OnClose(TimeSpan timeout)
{
}
protected override void OnEndClose(IAsyncResult result)
{
CompletedAsyncResult.End(result);
}
protected override void OnEndOpen(IAsyncResult result)
{
CompletedAsyncResult.End(result);
}
protected override void OnOpen(TimeSpan timeout)
{
}
}
}
|