Skip Headers

Oracle® Data Provider for .NET Developer's Guide
10g Release 1 (10.1.0.3)
Part No. B14164-01
  Go To Table Of Contents
Contents
Go To Index
Index

Previous Next  

OracleFailoverEventHandler Delegate

The OracleFailoverEventHandler represents the signature of the method that handles the OracleConnection.Failover event.

Declaration

// C#
public delegate FailoverReturnCode OracleFailoverEventHandler(object sender,
    OracleFailoverEventArgs eventArgs);

Parameter

Return Type

An int.

Remarks

To receive failover notifications, a callback function can be registered as follows:

ConObj.Failover += new OracleFailoverEventHandler(OnFailover); 

The definition of the callback function OnFailover can be as follows:

public FailoverReturnCode OnFailover(object sender, OracleFailoverEventArgs eventArgs) 
 

Example

// Transparent Application Failover (TAF) Setup
// Refer Oracle® Database Net Services Administrator's Guide
 
// C#
 
using System;
using System.Threading;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class OracleFailoverEventHandlerSample
{
  static void Main(string[] args)
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    // Register the event handler OnFailover
    con.Failover += new OracleFailoverEventHandler(OnFailover);
 
    con.Close();
    con.Dispose();
  }
	
  // TAF callback function 
  static FailoverReturnCode OnFailover(object sender, 
    OracleFailoverEventArgs eventArgs)
  {
    switch (eventArgs.FailoverEvent)
    {
      case FailoverEvent.Begin:
      {
        Console.WriteLine("FailoverEvent.Begin - Failover is starting");
        Console.WriteLine("FailoverType = " + eventArgs.FailoverType);
        break;
      }      
      case FailoverEvent.End:
      {
        Console.WriteLine("FailoverEvent.End - Failover was successful");
        break;
      }
      case FailoverEvent.Reauth:
      {
        Console.WriteLine("FailoverEvent.Reauth - User reauthenticated");
        break;
      }
      case FailoverEvent.Error:
      {
        Console.WriteLine("FailoverEvent.Error - Failover was unsuccessful");
 
        // Sleep for 3 sec and Retry
        Thread.Sleep(3000);
        return FailoverReturnCode.Retry;
      }
      case FailoverEvent.Abort:
      {
        Console.WriteLine("FailoverEvent.Abort - Failover was unsuccessful");
        break;
      }
      default:
      {
        Console.WriteLine("Invalid FailoverEvent : " + eventArgs.FailoverEvent);
        break;
      }
    }
    return FailoverReturnCode.Success;
  }
}