Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Runtime / Remoting / LeaseManager.cs / 1 / 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; } 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; } 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
- StreamInfo.cs
- AutomationPeer.cs
- TreeViewDataItemAutomationPeer.cs
- mediaeventargs.cs
- Int16Storage.cs
- XsdBuilder.cs
- XmlElementAttributes.cs
- DataGridViewButtonColumn.cs
- UnsafeNativeMethods.cs
- ExpressionPrefixAttribute.cs
- LowerCaseStringConverter.cs
- Scene3D.cs
- Point3DCollection.cs
- DataGridColumnFloatingHeader.cs
- SpnegoTokenProvider.cs
- ColorInterpolationModeValidation.cs
- TypedTableBaseExtensions.cs
- HttpHandlerActionCollection.cs
- ApplicationId.cs
- ConnectionStringSettings.cs
- DockPattern.cs
- Utils.cs
- ConditionalExpression.cs
- DBConcurrencyException.cs
- SplashScreenNativeMethods.cs
- ImageCodecInfoPrivate.cs
- WithStatement.cs
- SafeFindHandle.cs
- TableAdapterManagerHelper.cs
- ImageButton.cs
- AutoGeneratedFieldProperties.cs
- DeclarativeCatalogPart.cs
- SQLResource.cs
- SystemException.cs
- precedingsibling.cs
- Hashtable.cs
- MultiPartWriter.cs
- DownloadProgressEventArgs.cs
- PreProcessInputEventArgs.cs
- ConstraintConverter.cs
- metrodevice.cs
- ComboBoxItem.cs
- FileVersionInfo.cs
- GroupItem.cs
- FlowDocumentFormatter.cs
- OptionalRstParameters.cs
- TypographyProperties.cs
- OutputScopeManager.cs
- DefaultMemberAttribute.cs
- FileDetails.cs
- EventMappingSettings.cs
- EventDescriptor.cs
- ResolveNameEventArgs.cs
- UserPreference.cs
- VisualStyleRenderer.cs
- columnmapfactory.cs
- Command.cs
- DrawingImage.cs
- KeyedCollection.cs
- SessionPageStateSection.cs
- ToolStripPanel.cs
- HyperLinkColumn.cs
- UpdatePanelControlTrigger.cs
- RangeValuePatternIdentifiers.cs
- FigureParaClient.cs
- HitTestWithPointDrawingContextWalker.cs
- MissingManifestResourceException.cs
- HierarchicalDataSourceIDConverter.cs
- DetailsViewDeleteEventArgs.cs
- UIElementHelper.cs
- MultiView.cs
- StrongNamePublicKeyBlob.cs
- RenderData.cs
- XmlSchemaExternal.cs
- SmiGettersStream.cs
- PassportAuthenticationModule.cs
- TypographyProperties.cs
- DBSchemaTable.cs
- CompiledRegexRunner.cs
- DataContext.cs
- XXXInfos.cs
- BitConverter.cs
- BookmarkEventArgs.cs
- SqlCommandSet.cs
- HttpClientCredentialType.cs
- BitFlagsGenerator.cs
- ProxyFragment.cs
- AssociativeAggregationOperator.cs
- GregorianCalendarHelper.cs
- SafeFileHandle.cs
- XmlLanguageConverter.cs
- HttpCookieCollection.cs
- CqlBlock.cs
- CurrentChangingEventManager.cs
- AttachInfo.cs
- SiteMapNodeItem.cs
- QueuePathDialog.cs
- UrlAuthorizationModule.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- WindowVisualStateTracker.cs