Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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 [....] 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");
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//+----------------------------------------------------------------------------
//
// File: ClientSponsor.cs
//
// Contents: Agent for keeping Server Object's lifetime in [....] 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");
}
}
}
// 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
- ProfilePropertySettingsCollection.cs
- InternalsVisibleToAttribute.cs
- Trace.cs
- DataListItemEventArgs.cs
- SoapSchemaMember.cs
- Panel.cs
- filewebresponse.cs
- EnterpriseServicesHelper.cs
- TextEditorThreadLocalStore.cs
- SqlUserDefinedTypeAttribute.cs
- StringToken.cs
- DataGridCellAutomationPeer.cs
- DataContractSerializerFaultFormatter.cs
- FontCollection.cs
- MDIClient.cs
- ProviderIncompatibleException.cs
- CodeCommentStatementCollection.cs
- WSDualHttpBinding.cs
- Deflater.cs
- DataSourceControlBuilder.cs
- ToolStripOverflowButton.cs
- StatusBarPanel.cs
- QueryInterceptorAttribute.cs
- SafeCoTaskMem.cs
- DLinqDataModelProvider.cs
- ListItemCollection.cs
- PerspectiveCamera.cs
- CallbackCorrelationInitializer.cs
- EntityProxyFactory.cs
- UpdateTracker.cs
- SessionState.cs
- ReadContentAsBinaryHelper.cs
- Glyph.cs
- ExpanderAutomationPeer.cs
- SignerInfo.cs
- ImpersonateTokenRef.cs
- Delay.cs
- PropertyTabChangedEvent.cs
- DecimalKeyFrameCollection.cs
- TraceProvider.cs
- CounterSampleCalculator.cs
- RowToParametersTransformer.cs
- Mappings.cs
- HtmlShimManager.cs
- TextElement.cs
- dbdatarecord.cs
- EnumerableRowCollectionExtensions.cs
- NotificationContext.cs
- ComboBoxItem.cs
- RNGCryptoServiceProvider.cs
- WorkerProcess.cs
- MetadataException.cs
- FolderLevelBuildProvider.cs
- DropSourceBehavior.cs
- ActiveDocumentEvent.cs
- RecordManager.cs
- PropagatorResult.cs
- Logging.cs
- TextSearch.cs
- SectionInformation.cs
- ExpressionConverter.cs
- WebPartTracker.cs
- Point4DConverter.cs
- ConfigurationStrings.cs
- DbCommandDefinition.cs
- ResourceExpressionEditorSheet.cs
- DateTimeOffsetConverter.cs
- TextEffect.cs
- TextBoxBase.cs
- Quaternion.cs
- PropertySegmentSerializer.cs
- CompareValidator.cs
- PropertyTabChangedEvent.cs
- PropertyConverter.cs
- SetterTriggerConditionValueConverter.cs
- IRCollection.cs
- PerformanceCounterCategory.cs
- XmlBindingWorker.cs
- _UriSyntax.cs
- RemoteWebConfigurationHostStream.cs
- RouteItem.cs
- StreamingContext.cs
- TranslateTransform3D.cs
- categoryentry.cs
- CompiledIdentityConstraint.cs
- BindingNavigator.cs
- Matrix.cs
- FreezableCollection.cs
- RectAnimationClockResource.cs
- TextEvent.cs
- LinkConverter.cs
- XamlReader.cs
- EmptyImpersonationContext.cs
- LinqDataSourceHelper.cs
- XmlStrings.cs
- BinHexEncoding.cs
- XamlGridLengthSerializer.cs
- ZipIOLocalFileDataDescriptor.cs
- CodeDomConfigurationHandler.cs
- DataGridViewLayoutData.cs