Beispiel #1
0
 public virtual object GetConnectionObject()
 {
     object obj2 = null;
       object obj3;
       lock (this)
       {
     try
     {
       this.CheckConnection();
       if (this.m_State == ConnectionAvailabilityState.Unavailable)
       {
     try
     {
       TimeSpan span = (TimeSpan)(DateTime.Now - this.m_DownTimeStamp);
       double totalSeconds = span.TotalSeconds;
       if (this.m_ConnectionAliveEvent != null)
       {
         object[] args = new object[] { this.m_ConnectionName, totalSeconds };
         ((ConnectionAliveEvent)Activator.CreateInstance(this.m_ConnectionAliveEvent, args)).Sign();
       }
       if (this.m_ErrorCounter != null)
       {
         this.m_ErrorCounter.RawValue = 0L;
       }
     }
     catch (Exception exception)
     {
       ExceptionManager.Publish(exception);
     }
       }
       obj2 = this.CreateConnectionObject();
       this.m_State = ConnectionAvailabilityState.Available;
       if (this.m_AvailableCounter != null)
       {
     this.m_AvailableCounter.RawValue = 1L;
       }
       obj3 = obj2;
     }
     catch (Exception exception2)
     {
       this.m_ConnException = exception2;
       if (this.m_State != ConnectionAvailabilityState.Unavailable)
       {
     this.m_DownTimeStamp = DateTime.Now;
     try
     {
       if (this.m_ConnectionDeadEvent != null)
       {
         object[] objArray2 = new object[] { this.m_ConnectionName, exception2 };
         ((ConnectionDeadEvent)Activator.CreateInstance(this.m_ConnectionDeadEvent, objArray2)).Sign();
       }
     }
     catch (Exception exception3)
     {
       ExceptionManager.Publish(exception3);
     }
       }
       this.m_State = ConnectionAvailabilityState.Unavailable;
       if (this.m_AvailableCounter != null)
       {
     this.m_AvailableCounter.RawValue = 0L;
       }
       if (this.m_ErrorCounter != null)
       {
     this.m_ErrorCounter.Increment();
       }
       this.SignUnavailability(exception2);
       obj3 = obj2;
     }
     finally
     {
       this.CleanUp();
     }
       }
       return obj3;
 }
Beispiel #2
0
 // Methods
 public ConnectionProvider(string name)
 {
     this.m_ConnectionName = name;
       this.m_ConnectionAliveEvent = null;
       this.m_ConnectionDeadEvent = null;
       this.m_State = ConnectionAvailabilityState.NotTried;
       this.m_ConnException = null;
       this.m_AvailableCounter = null;
       this.m_ErrorCounter = null;
       this.m_AutoRecoveryInterval = 0;
       this.m_RecoveryThread = null;
 }