Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Runtime / Remoting / ClientSponsor.cs / 1 / ClientSponsor.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//+----------------------------------------------------------------------------
//
// File: ClientSponsor.cs
//
// Contents: Agent for keeping Server Object's lifetime in sync with a client's lifetime
//
// History: 8/9/00 [....] Created
//
//+---------------------------------------------------------------------------
namespace System.Runtime.Remoting.Lifetime
{
using System;
using System.Collections;
using System.Security.Permissions;
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]
[SecurityPermissionAttribute(SecurityAction.InheritanceDemand, Flags=SecurityPermissionFlag.Infrastructure)]
[System.Runtime.InteropServices.ComVisible(true)]
public class ClientSponsor : MarshalByRefObject, ISponsor
{
private Hashtable sponsorTable = new Hashtable(10);
private TimeSpan m_renewalTime = TimeSpan.FromMinutes(2);
public ClientSponsor()
{
}
public ClientSponsor(TimeSpan renewalTime)
{
this.m_renewalTime = renewalTime;
}
public TimeSpan RenewalTime
{
get{ return m_renewalTime;}
set{ m_renewalTime = value;}
}
public bool Register(MarshalByRefObject obj)
{
BCLDebug.Trace("REMOTE", "ClientSponsor Register "+obj);
ILease lease = (ILease)obj.GetLifetimeService();
if (lease == null)
return false;
lease.Register(this);
lock(sponsorTable)
{
sponsorTable[obj] = lease;
}
return true;
}
public void Unregister(MarshalByRefObject obj)
{
BCLDebug.Trace("REMOTE", "ClientSponsor Unregister "+obj);
ILease lease = null;
lock(sponsorTable)
{
lease = (ILease)sponsorTable[obj];
}
if (lease != null)
lease.Unregister(this);
}
// ISponsor method
public TimeSpan Renewal(ILease lease)
{
BCLDebug.Trace("REMOTE", "ClientSponsor Renewal "+m_renewalTime);
return m_renewalTime;
}
public void Close()
{
BCLDebug.Trace("REMOTE","ClientSponsor Close");
lock(sponsorTable)
{
IDictionaryEnumerator e = sponsorTable.GetEnumerator();
while(e.MoveNext())
((ILease)e.Value).Unregister(this);
sponsorTable.Clear();
}
}
// Don't create a lease on the sponsor
public override Object InitializeLifetimeService()
{
return null;
}
~ClientSponsor()
{
BCLDebug.Trace("REMOTE","ClientSponsor Finalize");
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WindowsStatusBar.cs
- SafeViewOfFileHandle.cs
- GCHandleCookieTable.cs
- TableRowCollection.cs
- IImplicitResourceProvider.cs
- TypeSemantics.cs
- StreamWithDictionary.cs
- SvcFileManager.cs
- InstanceNormalEvent.cs
- KoreanCalendar.cs
- HtmlDocument.cs
- RuntimeEnvironment.cs
- CommonProperties.cs
- MiniParameterInfo.cs
- PageAction.cs
- ObjectReaderCompiler.cs
- NullReferenceException.cs
- HyperLinkColumn.cs
- HMACSHA1.cs
- PropertyItem.cs
- WindowsFormsHostPropertyMap.cs
- HtmlInputText.cs
- FontNameEditor.cs
- CompilerErrorCollection.cs
- InheritanceService.cs
- TypeInitializationException.cs
- PropertyConverter.cs
- Serializer.cs
- CheckoutException.cs
- FileNotFoundException.cs
- XmlMessageFormatter.cs
- DataObject.cs
- TextBoxLine.cs
- DataServiceQueryException.cs
- GlobalizationSection.cs
- OleDbParameter.cs
- CurrencyWrapper.cs
- XmlImplementation.cs
- DataSourceCacheDurationConverter.cs
- XmlUtil.cs
- DesignOnlyAttribute.cs
- MediaTimeline.cs
- ResourceAssociationType.cs
- DispatcherEventArgs.cs
- ResumeStoryboard.cs
- ContentElementAutomationPeer.cs
- IntMinMaxAggregationOperator.cs
- PersonalizationProvider.cs
- PriorityBindingExpression.cs
- ParseChildrenAsPropertiesAttribute.cs
- XmlValidatingReader.cs
- FileInfo.cs
- UrlMappingsModule.cs
- TableLayout.cs
- QueryAccessibilityHelpEvent.cs
- DataViewSettingCollection.cs
- DesignerActionVerbList.cs
- CustomError.cs
- Process.cs
- HttpConfigurationSystem.cs
- BreakRecordTable.cs
- ServiceObjectContainer.cs
- MethodExpr.cs
- ClientSession.cs
- WindowsListViewGroup.cs
- cookie.cs
- FlowDocumentView.cs
- TabPanel.cs
- ErrorFormatter.cs
- COM2PropertyDescriptor.cs
- ProviderSettingsCollection.cs
- DataStreamFromComStream.cs
- CharKeyFrameCollection.cs
- GifBitmapDecoder.cs
- QueryStringParameter.cs
- InstanceBehavior.cs
- DataControlCommands.cs
- PassportPrincipal.cs
- PolicyVersion.cs
- PropertyGeneratedEventArgs.cs
- CodeDOMUtility.cs
- BuildResult.cs
- X509ChainPolicy.cs
- PermissionSet.cs
- AppDomainGrammarProxy.cs
- EventProviderWriter.cs
- TemplateNameScope.cs
- EntityDataSourceWrapper.cs
- ResourceDefaultValueAttribute.cs
- ToolBarOverflowPanel.cs
- AutomationInteropProvider.cs
- ObjectTokenCategory.cs
- TraceListeners.cs
- TempFiles.cs
- CodePrimitiveExpression.cs
- BasicAsyncResult.cs
- RectangleGeometry.cs
- LoginUtil.cs
- TraceListeners.cs
- ObjectNotFoundException.cs