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
- _IPv4Address.cs
- BufferedReadStream.cs
- LogExtent.cs
- ObjectViewFactory.cs
- VisualBrush.cs
- DocumentApplicationState.cs
- CodeDesigner.cs
- ValueTable.cs
- Vector3DCollectionValueSerializer.cs
- PointF.cs
- InteropAutomationProvider.cs
- DeflateEmulationStream.cs
- UIElementHelper.cs
- EnumerableRowCollection.cs
- HtmlTableCellCollection.cs
- TextSelection.cs
- XmlDocumentFieldSchema.cs
- FactoryGenerator.cs
- DataListItemCollection.cs
- NetNamedPipeSecurityElement.cs
- _NestedMultipleAsyncResult.cs
- SqlInternalConnection.cs
- TextDecorationCollection.cs
- CancellationTokenRegistration.cs
- SkewTransform.cs
- ResourceCodeDomSerializer.cs
- TraceHwndHost.cs
- __Filters.cs
- TdsRecordBufferSetter.cs
- MessageEncodingBindingElement.cs
- AmbiguousMatchException.cs
- JapaneseCalendar.cs
- StoreConnection.cs
- EqualityArray.cs
- DbProviderConfigurationHandler.cs
- HMACSHA1.cs
- PermissionSet.cs
- RichTextBox.cs
- ClientTarget.cs
- PerfCounterSection.cs
- Positioning.cs
- AspNetSynchronizationContext.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- WindowsRegion.cs
- XamlTreeBuilder.cs
- ProgressBarHighlightConverter.cs
- SqlDataSourceView.cs
- ToggleButton.cs
- SocketPermission.cs
- DataProtection.cs
- SimpleType.cs
- StringHandle.cs
- ControlType.cs
- NetDispatcherFaultException.cs
- URLBuilder.cs
- EncryptedHeaderXml.cs
- LockCookie.cs
- WebDescriptionAttribute.cs
- EntityModelSchemaGenerator.cs
- SectionInformation.cs
- DbConnectionClosed.cs
- DescendantBaseQuery.cs
- XmlElementList.cs
- Bezier.cs
- DataContractAttribute.cs
- DrawingVisualDrawingContext.cs
- CheckBoxList.cs
- MembershipPasswordException.cs
- PageThemeBuildProvider.cs
- AssertFilter.cs
- XslException.cs
- DataGridViewCellStyleConverter.cs
- EntityDataSourceChangedEventArgs.cs
- EventProperty.cs
- EventSetter.cs
- XslVisitor.cs
- Subtree.cs
- DataGridItemCollection.cs
- RecordBuilder.cs
- QilInvoke.cs
- MediaSystem.cs
- QuarticEase.cs
- Events.cs
- SafeRightsManagementEnvironmentHandle.cs
- BufferAllocator.cs
- InternalTypeHelper.cs
- X509ThumbprintKeyIdentifierClause.cs
- TextAction.cs
- DetailsViewDeleteEventArgs.cs
- EdgeModeValidation.cs
- SoapFaultCodes.cs
- SqlNotificationEventArgs.cs
- ModelFunction.cs
- NonParentingControl.cs
- ProtocolImporter.cs
- TreeViewItemAutomationPeer.cs
- XamlBrushSerializer.cs
- Crc32Helper.cs
- DbSource.cs
- OLEDB_Util.cs