Package org.mariadb.jdbc.internal.failover

## Class FailoverProxy

- java.lang.Object
- - org.mariadb.jdbc.internal.failover.FailoverProxy

All Implemented Interfaces:
  `InvocationHandler`

    public class FailoverProxy
    extends Object
    implements InvocationHandler

### Field Summary

Fields
`ReentrantLock` `lock`
`LruTraceCache` `traceCache`

### Constructor Summary

Constructors
`FailoverProxy​(Listener listener, ReentrantLock lock, LruTraceCache traceCache)` Proxy constructor.

### Method Summary

All Methods Instance Methods Concrete Methods
`Listener` `getListener()`
`boolean` `hasToHandleFailover​(SQLException exception)` Check if this Sqlerror is a connection exception.
`Object` `invoke​(Object proxy, Method method, Object[] args)` Proxy that catch Protocol call, to permit to catch errors and handle failover when multiple hosts.
`void` `reconnect()` Launch reconnect implementation.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### lock

    public final ReentrantLock lock

#### traceCache

    public final LruTraceCache traceCache

### Constructor Detail

#### FailoverProxy

    public FailoverProxy​(Listener listener,
                         ReentrantLock lock,
                         LruTraceCache traceCache)
                  throws SQLException

Proxy constructor.

Parameters:
  `listener` - failover implementation.
  `lock` - synchronisation lock
  `traceCache` - trace cache
Throws:
  `SQLException` - if connection error occur

### Method Detail

#### invoke

    public Object invoke​(Object proxy,
                         Method method,
                         Object[] args)
                  throws Throwable

Proxy that catch Protocol call, to permit to catch errors and handle failover when multiple hosts.

Specified by:
  `invoke` in interface `InvocationHandler`
Parameters:
  `proxy` - the current protocol
  `method` - the called method on the protocol
  `args` - methods parameters
Returns:
  protocol method result
Throws:
  `Throwable` - the method throwed error if not catch by failover

#### hasToHandleFailover

    public boolean hasToHandleFailover​(SQLException exception)

Check if this Sqlerror is a connection exception. if that's the case, must be handle by failover

error codes : 08000 : connection exception 08001 : SQL client unable to establish SQL connection 08002 : connection name in use 08003 : connection does not exist 08004 : SQL server rejected SQL connection 08006 : connection failure 08007 : transaction resolution unknown 70100 : connection was killed if error code is "1927"

Parameters:
  `exception` - the Exception
Returns:
  true if there has been a connection error that must be handled by failover

#### reconnect

    public void reconnect()
                   throws SQLException

Launch reconnect implementation.

Throws:
  `SQLException` - exception

#### getListener

    public Listener getListener()