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
- ManagementScope.cs
- OletxDependentTransaction.cs
- SqlConnectionManager.cs
- SizeAnimationBase.cs
- AssemblyAttributes.cs
- InfoCardClaim.cs
- Content.cs
- DataGridTablesFactory.cs
- TextBoxRenderer.cs
- _TransmitFileOverlappedAsyncResult.cs
- HealthMonitoringSection.cs
- CalendarModeChangedEventArgs.cs
- ECDsa.cs
- _FixedSizeReader.cs
- WCFBuildProvider.cs
- RootAction.cs
- MatrixCamera.cs
- EntitySetBase.cs
- AttachedPropertiesService.cs
- TextLineResult.cs
- CssTextWriter.cs
- ListViewItemSelectionChangedEvent.cs
- ActiveDocumentEvent.cs
- TextFormatter.cs
- SafeNativeMethods.cs
- ZoomPercentageConverter.cs
- IsolationInterop.cs
- TextTreeUndoUnit.cs
- XPathMessageFilter.cs
- TypeListConverter.cs
- ReceiveCompletedEventArgs.cs
- WmlControlAdapter.cs
- ButtonBaseAutomationPeer.cs
- SqlException.cs
- Config.cs
- SkipQueryOptionExpression.cs
- RemoveStoryboard.cs
- HTMLTagNameToTypeMapper.cs
- FileIOPermission.cs
- IndependentAnimationStorage.cs
- ADRoleFactoryConfiguration.cs
- SynthesizerStateChangedEventArgs.cs
- TextServicesDisplayAttributePropertyRanges.cs
- ContainerControl.cs
- FileSystemEventArgs.cs
- ContentFilePart.cs
- ParallelTimeline.cs
- SchemaManager.cs
- RtfToXamlReader.cs
- GcSettings.cs
- CorePropertiesFilter.cs
- HtmlGenericControl.cs
- AutomationEventArgs.cs
- CultureSpecificCharacterBufferRange.cs
- IODescriptionAttribute.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- StatusStrip.cs
- SoapIncludeAttribute.cs
- ContextStack.cs
- ProcessHost.cs
- ComplexBindingPropertiesAttribute.cs
- Filter.cs
- Utils.cs
- PrimitiveXmlSerializers.cs
- SystemIcmpV4Statistics.cs
- ServerValidateEventArgs.cs
- SvcMapFileLoader.cs
- GlyphTypeface.cs
- AttributeInfo.cs
- RecognizedPhrase.cs
- DataChangedEventManager.cs
- TextChange.cs
- FindProgressChangedEventArgs.cs
- NavigationExpr.cs
- newinstructionaction.cs
- LoopExpression.cs
- ExtractorMetadata.cs
- VariableQuery.cs
- AppModelKnownContentFactory.cs
- ResourceExpressionEditor.cs
- Rotation3DAnimationBase.cs
- TextEffect.cs
- GridErrorDlg.cs
- UnknownBitmapEncoder.cs
- ItemTypeToolStripMenuItem.cs
- Journal.cs
- XmlSchemaAttributeGroupRef.cs
- TextParaLineResult.cs
- SetterBase.cs
- XmlQueryTypeFactory.cs
- Viewport2DVisual3D.cs
- KeyValuePairs.cs
- PaginationProgressEventArgs.cs
- KnownIds.cs
- TransactionManager.cs
- XmlSchemaSimpleTypeRestriction.cs
- ScrollData.cs
- Inline.cs
- FixedDocument.cs
- SqlConnectionPoolProviderInfo.cs