Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Remoting / LeaseManager.cs / 1305376 / LeaseManager.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //+---------------------------------------------------------------------------- // // Microsoft Windows // File: LeaseManager.cs // // Contents: Administers the leases in an appdomain // // History: 1/5/00[....] Created // //+--------------------------------------------------------------------------- namespace System.Runtime.Remoting.Lifetime { using System; using System.Collections; using System.Threading; internal class LeaseManager { // Lease Lists private Hashtable leaseToTimeTable = new Hashtable(); // Async Sponsor Calls //private SortedList sponsorCallList = new SortedList(); private Hashtable sponsorTable = new Hashtable(); // LeaseTimeAnalyzer thread private TimeSpan pollTime; AutoResetEvent waitHandle; TimerCallback leaseTimeAnalyzerDelegate; private volatile Timer leaseTimer; internal static bool IsInitialized() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; return leaseManager != null; } [System.Security.SecurityCritical] // auto-generated internal static LeaseManager GetLeaseManager(TimeSpan pollTime) { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; if (leaseManager == null) { lock (remotingData) { if (remotingData.LeaseManager == null) { remotingData.LeaseManager = new LeaseManager(pollTime); } leaseManager = remotingData.LeaseManager; } } return leaseManager; } internal static LeaseManager GetLeaseManager() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; BCLDebug.Assert(leaseManager != null, "[LeaseManager.GetLeaseManager()]leaseManager !=null"); return leaseManager; } [System.Security.SecurityCritical] // auto-generated private LeaseManager(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager Constructor"); this.pollTime = pollTime; leaseTimeAnalyzerDelegate = new TimerCallback(this.LeaseTimeAnalyzer); waitHandle = new AutoResetEvent(false); // We need to create a Timer with Infinite dueTime to ensure that // leaseTimeAnalyzerDelegate doesnt get invoked before leaseTimer is initialized // Once initialized we can change it to the appropriate dueTime leaseTimer = new Timer(leaseTimeAnalyzerDelegate, null, Timeout.Infinite, Timeout.Infinite); leaseTimer.Change((int)pollTime.TotalMilliseconds, Timeout.Infinite); } internal void ChangePollTime(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager ChangePollTime ", pollTime); this.pollTime = pollTime; } internal void ActivateLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager AddLease ",lease.id," ",lease.managedObject); lock(leaseToTimeTable) { leaseToTimeTable[lease] = lease.leaseTime; } } internal void DeleteLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager DeleteLease ",lease.id); lock(leaseToTimeTable) { leaseToTimeTable.Remove(lease); } } [System.Diagnostics.Conditional("_LOGGING")] internal void DumpLeases(Lease[] leases) { for (int i=0; i[....] Created // //+--------------------------------------------------------------------------- namespace System.Runtime.Remoting.Lifetime { using System; using System.Collections; using System.Threading; internal class LeaseManager { // Lease Lists private Hashtable leaseToTimeTable = new Hashtable(); // Async Sponsor Calls //private SortedList sponsorCallList = new SortedList(); private Hashtable sponsorTable = new Hashtable(); // LeaseTimeAnalyzer thread private TimeSpan pollTime; AutoResetEvent waitHandle; TimerCallback leaseTimeAnalyzerDelegate; private volatile Timer leaseTimer; internal static bool IsInitialized() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; return leaseManager != null; } [System.Security.SecurityCritical] // auto-generated internal static LeaseManager GetLeaseManager(TimeSpan pollTime) { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; if (leaseManager == null) { lock (remotingData) { if (remotingData.LeaseManager == null) { remotingData.LeaseManager = new LeaseManager(pollTime); } leaseManager = remotingData.LeaseManager; } } return leaseManager; } internal static LeaseManager GetLeaseManager() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; BCLDebug.Assert(leaseManager != null, "[LeaseManager.GetLeaseManager()]leaseManager !=null"); return leaseManager; } [System.Security.SecurityCritical] // auto-generated private LeaseManager(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager Constructor"); this.pollTime = pollTime; leaseTimeAnalyzerDelegate = new TimerCallback(this.LeaseTimeAnalyzer); waitHandle = new AutoResetEvent(false); // We need to create a Timer with Infinite dueTime to ensure that // leaseTimeAnalyzerDelegate doesnt get invoked before leaseTimer is initialized // Once initialized we can change it to the appropriate dueTime leaseTimer = new Timer(leaseTimeAnalyzerDelegate, null, Timeout.Infinite, Timeout.Infinite); leaseTimer.Change((int)pollTime.TotalMilliseconds, Timeout.Infinite); } internal void ChangePollTime(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager ChangePollTime ", pollTime); this.pollTime = pollTime; } internal void ActivateLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager AddLease ",lease.id," ",lease.managedObject); lock(leaseToTimeTable) { leaseToTimeTable[lease] = lease.leaseTime; } } internal void DeleteLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager DeleteLease ",lease.id); lock(leaseToTimeTable) { leaseToTimeTable.Remove(lease); } } [System.Diagnostics.Conditional("_LOGGING")] internal void DumpLeases(Lease[] leases) { for (int i=0; i
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DbConnectionStringCommon.cs
- HtmlListAdapter.cs
- ConstantCheck.cs
- FontSource.cs
- Base64Decoder.cs
- SettingsPropertyValue.cs
- SafeRsaProviderHandle.cs
- HttpRuntime.cs
- PingReply.cs
- ModelTypeConverter.cs
- ConsumerConnectionPoint.cs
- safesecurityhelperavalon.cs
- XmlSchemas.cs
- TraceFilter.cs
- BindingListCollectionView.cs
- Assembly.cs
- _DigestClient.cs
- CultureInfo.cs
- DataDocumentXPathNavigator.cs
- Asn1IntegerConverter.cs
- FolderBrowserDialogDesigner.cs
- ResourceDisplayNameAttribute.cs
- KerberosReceiverSecurityToken.cs
- ISSmlParser.cs
- PersonalizationProvider.cs
- InputBinding.cs
- ClipboardData.cs
- BuildProviderUtils.cs
- XmlNotation.cs
- ExpressionWriter.cs
- OdbcException.cs
- ReadOnlyAttribute.cs
- BitmapFrameDecode.cs
- RequestUriProcessor.cs
- ZipIOLocalFileDataDescriptor.cs
- LogArchiveSnapshot.cs
- NodeInfo.cs
- DataGridViewCellStyleChangedEventArgs.cs
- ImageList.cs
- TemplatePartAttribute.cs
- HeaderCollection.cs
- BitmapCacheBrush.cs
- AssociationSetEnd.cs
- XmlTextReaderImplHelpers.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- COAUTHINFO.cs
- validation.cs
- BamlLocalizer.cs
- EventProviderWriter.cs
- MembershipPasswordException.cs
- SecurityKeyType.cs
- SystemNetHelpers.cs
- cookieexception.cs
- XmlQualifiedName.cs
- DataGridViewColumnStateChangedEventArgs.cs
- NativeCppClassAttribute.cs
- MaterializeFromAtom.cs
- MethodBody.cs
- PackageStore.cs
- EndPoint.cs
- WizardPanel.cs
- TransformedBitmap.cs
- ConfigPathUtility.cs
- PassportIdentity.cs
- AssemblyInfo.cs
- UnsafeNativeMethods.cs
- SimpleTypeResolver.cs
- FontDriver.cs
- SchemaMapping.cs
- MetafileHeaderWmf.cs
- RestClientProxyHandler.cs
- SQLMembershipProvider.cs
- PersonalizationProviderHelper.cs
- DoubleCollectionConverter.cs
- TreeChangeInfo.cs
- RegexWorker.cs
- WebEventCodes.cs
- Clause.cs
- XmlSchemaRedefine.cs
- ChannelManagerBase.cs
- ThicknessAnimationBase.cs
- TypeUsageBuilder.cs
- SqlDataSource.cs
- CustomAttribute.cs
- RefType.cs
- SecurityResources.cs
- DummyDataSource.cs
- TimeoutException.cs
- SerializationSectionGroup.cs
- ToolboxItemAttribute.cs
- TreeNodeStyle.cs
- TableHeaderCell.cs
- HwndTarget.cs
- XsdDataContractImporter.cs
- ExpandableObjectConverter.cs
- WebScriptClientGenerator.cs
- HelloMessageCD1.cs
- Compiler.cs
- UserControl.cs
- AssemblyUtil.cs