Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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
- ExtensionWindowHeader.cs
- SQLBytesStorage.cs
- TableRow.cs
- CaseCqlBlock.cs
- DataSourceGroupCollection.cs
- TransformDescriptor.cs
- EpmSourceTree.cs
- EmbeddedMailObject.cs
- GridEntry.cs
- SafeNativeMethodsMilCoreApi.cs
- QilNode.cs
- SecUtil.cs
- Parsers.cs
- Command.cs
- PropertyManager.cs
- RootBrowserWindowAutomationPeer.cs
- DataGridAutoFormat.cs
- XmlRootAttribute.cs
- ManualResetEvent.cs
- _BasicClient.cs
- InfoCardBaseException.cs
- BezierSegment.cs
- ChildDocumentBlock.cs
- SystemTcpStatistics.cs
- ExeConfigurationFileMap.cs
- ContainerControl.cs
- DrawingServices.cs
- backend.cs
- CFGGrammar.cs
- CalendarTable.cs
- SplitterCancelEvent.cs
- TypeDescriptionProvider.cs
- NumberFunctions.cs
- ConfigXmlComment.cs
- OwnerDrawPropertyBag.cs
- UIElementCollection.cs
- FindCriteriaCD1.cs
- NumericUpDownAccelerationCollection.cs
- CfgArc.cs
- EdmConstants.cs
- TextureBrush.cs
- MembershipSection.cs
- EarlyBoundInfo.cs
- ExceptionValidationRule.cs
- ManualResetEvent.cs
- ComponentConverter.cs
- XmlValidatingReader.cs
- Trace.cs
- DbConnectionHelper.cs
- SqlFlattener.cs
- SynthesizerStateChangedEventArgs.cs
- WebPartZone.cs
- PointAnimationUsingPath.cs
- VersionedStream.cs
- Screen.cs
- ItemMap.cs
- TypeKeyValue.cs
- CodeRemoveEventStatement.cs
- Utils.cs
- Int32KeyFrameCollection.cs
- altserialization.cs
- HwndKeyboardInputProvider.cs
- AdapterUtil.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- UpdateCommandGenerator.cs
- HttpRawResponse.cs
- HistoryEventArgs.cs
- HtmlGenericControl.cs
- Vector3DCollectionValueSerializer.cs
- And.cs
- DelimitedListTraceListener.cs
- QilVisitor.cs
- KoreanLunisolarCalendar.cs
- AutoCompleteStringCollection.cs
- DrawingBrush.cs
- EnlistmentState.cs
- DataKeyCollection.cs
- TypeInitializationException.cs
- SolidColorBrush.cs
- XmlTextAttribute.cs
- PropertyDescriptorComparer.cs
- MimeBasePart.cs
- TextSpanModifier.cs
- KeyConverter.cs
- InheritanceContextChangedEventManager.cs
- CompositionDesigner.cs
- DataList.cs
- ISO2022Encoding.cs
- ImageMetadata.cs
- KnownTypeAttribute.cs
- EditorAttribute.cs
- RegexWorker.cs
- DesignerValidatorAdapter.cs
- TypeSystem.cs
- SafeCryptHandles.cs
- OutputWindow.cs
- AnimationClock.cs
- SplitterCancelEvent.cs
- TokenBasedSetEnumerator.cs
- FloaterBaseParaClient.cs