Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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[....] 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
- CqlLexer.cs
- RuntimeConfigurationRecord.cs
- Composition.cs
- GenericUriParser.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- ADRoleFactory.cs
- MemberJoinTreeNode.cs
- AutomationPropertyInfo.cs
- SelectionWordBreaker.cs
- Visitor.cs
- TextTreeTextBlock.cs
- TreeBuilderBamlTranslator.cs
- PrintDialogDesigner.cs
- CorrelationHandle.cs
- AssemblyFilter.cs
- ValueSerializer.cs
- RowsCopiedEventArgs.cs
- MouseOverProperty.cs
- VoiceChangeEventArgs.cs
- ConstrainedGroup.cs
- EntityCommandExecutionException.cs
- DateTimeValueSerializerContext.cs
- WebEventCodes.cs
- InlineObject.cs
- SoapObjectReader.cs
- AssemblyCollection.cs
- TextEditorDragDrop.cs
- InkCanvasAutomationPeer.cs
- PeerObject.cs
- DataGridViewRowPostPaintEventArgs.cs
- PatternMatcher.cs
- ModuleElement.cs
- IResourceProvider.cs
- SiteIdentityPermission.cs
- MatrixAnimationUsingKeyFrames.cs
- LinqToSqlWrapper.cs
- ClientRolePrincipal.cs
- IResourceProvider.cs
- InputLangChangeRequestEvent.cs
- LineSegment.cs
- XDRSchema.cs
- Deserializer.cs
- DelegateBodyWriter.cs
- FileDialog.cs
- TextTreeTextElementNode.cs
- ExceptionHandlerDesigner.cs
- DragEvent.cs
- XmlSchemaSimpleContent.cs
- DirtyTextRange.cs
- SvcMapFileSerializer.cs
- DeferredTextReference.cs
- RegexRunnerFactory.cs
- OperationInfo.cs
- Overlapped.cs
- SrgsDocumentParser.cs
- SegmentInfo.cs
- TreeWalkHelper.cs
- ApplicationManager.cs
- XamlLoadErrorInfo.cs
- CompoundFileStorageReference.cs
- GridViewRowPresenter.cs
- SqlBulkCopyColumnMappingCollection.cs
- Transform.cs
- DataGridViewTextBoxColumn.cs
- RotateTransform3D.cs
- MarshalByValueComponent.cs
- UIElement3D.cs
- MsmqIntegrationChannelFactory.cs
- MULTI_QI.cs
- DecimalKeyFrameCollection.cs
- Comparer.cs
- RsaKeyIdentifierClause.cs
- MultiTrigger.cs
- AdapterDictionary.cs
- OleDbEnumerator.cs
- ConstructorNeedsTagAttribute.cs
- SHA1Managed.cs
- KeyedHashAlgorithm.cs
- DynamicMethod.cs
- ComponentDispatcher.cs
- PipeConnection.cs
- HMACSHA256.cs
- ResourceAttributes.cs
- RegistrySecurity.cs
- ValidationHelper.cs
- PolicyStatement.cs
- TdsValueSetter.cs
- EventLogWatcher.cs
- Logging.cs
- ContextMenu.cs
- _DisconnectOverlappedAsyncResult.cs
- HtmlInputHidden.cs
- ScriptControlDescriptor.cs
- GridPattern.cs
- ExpressionLink.cs
- CompositeCollectionView.cs
- NoneExcludedImageIndexConverter.cs
- EqualityComparer.cs
- Hex.cs
- UpdateExpressionVisitor.cs