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
- ProcessModelInfo.cs
- recordstatefactory.cs
- EntitySet.cs
- ConnectionConsumerAttribute.cs
- CultureSpecificStringDictionary.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- ClientTargetSection.cs
- HttpInputStream.cs
- SourceFileInfo.cs
- OperandQuery.cs
- Evidence.cs
- ActionItem.cs
- Polyline.cs
- DataBoundControlHelper.cs
- PathGradientBrush.cs
- CalendarDataBindingHandler.cs
- XmlDataSourceNodeDescriptor.cs
- XamlBuildProvider.cs
- FullTextBreakpoint.cs
- Label.cs
- DefaultValidator.cs
- BitmapSizeOptions.cs
- GeometryCollection.cs
- FolderBrowserDialog.cs
- ConnectionProviderAttribute.cs
- WsatConfiguration.cs
- ParallelQuery.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- GeometryHitTestParameters.cs
- TextMarkerSource.cs
- PasswordRecovery.cs
- ObjectDesignerDataSourceView.cs
- TouchesOverProperty.cs
- SqlConnection.cs
- LineServices.cs
- XmlWriterTraceListener.cs
- HttpRequest.cs
- BaseTemplateCodeDomTreeGenerator.cs
- UnitySerializationHolder.cs
- FontFamilyValueSerializer.cs
- UInt32Converter.cs
- DataGridViewEditingControlShowingEventArgs.cs
- DbgUtil.cs
- UserNamePasswordClientCredential.cs
- BrowserDefinitionCollection.cs
- MeshGeometry3D.cs
- PropertyEmitter.cs
- SystemUdpStatistics.cs
- ButtonAutomationPeer.cs
- SystemResourceKey.cs
- ConfigurationCollectionAttribute.cs
- WpfKnownMemberInvoker.cs
- UnsafeNativeMethodsPenimc.cs
- HyperLinkDesigner.cs
- PathTooLongException.cs
- RangeBase.cs
- ExpressionVisitorHelpers.cs
- DataGridViewCellValidatingEventArgs.cs
- CmsInterop.cs
- ResourceDisplayNameAttribute.cs
- ActivityCodeDomReferenceService.cs
- ScriptResourceInfo.cs
- EmptyImpersonationContext.cs
- WebPartActionVerb.cs
- LoginViewDesigner.cs
- Misc.cs
- UserControlParser.cs
- FolderBrowserDialogDesigner.cs
- PropertyChangeTracker.cs
- TranslateTransform3D.cs
- SoapMessage.cs
- SplitterPanelDesigner.cs
- BufferedWebEventProvider.cs
- TraceContextEventArgs.cs
- ValidatorCollection.cs
- LayoutEditorPart.cs
- CodeTypeOfExpression.cs
- HealthMonitoringSection.cs
- BitStream.cs
- ElementNotEnabledException.cs
- Timer.cs
- IisTraceListener.cs
- ObjectViewEntityCollectionData.cs
- XmlSchemaFacet.cs
- LayoutEditorPart.cs
- OneOf.cs
- UserControl.cs
- rsa.cs
- TransportConfigurationTypeElementCollection.cs
- BrowserTree.cs
- PropertyGridCommands.cs
- RsaElement.cs
- CTreeGenerator.cs
- TextRangeEditTables.cs
- SharedPerformanceCounter.cs
- DecoratedNameAttribute.cs
- ObjectConverter.cs
- ActivityWithResultValueSerializer.cs
- FirstMatchCodeGroup.cs
- SequentialOutput.cs