/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved. * * $Id$ */ package com.sleepycat.db; import com.sleepycat.db.internal.DbConstants; /** The ReplicationTimeoutType defines the types of timeouts that can beconfigured for the Berkeley Db replication functionality. <p> The class is used in the {@link com.sleepycat.db.Environment#setReplicationTimeout Environment.setReplicationTimeout} method. */ public final class ReplicationTimeoutType { /** Configure the amount of time the replication manager's transport function waits to collect enough acknowledgments from replication group clients, before giving up and returning a failure indication. */ public static final ReplicationTimeoutType ACK_TIMEOUT = new ReplicationTimeoutType("ACK_TIMEOUT", DbConstants.DB_REP_ACK_TIMEOUT); /** Configure the amount of time the replication manager will delay between completing a checkpoint and writing a checkpoint record into the log. This delay allows clients to complete their own checkpoints before the master requires completion of them. The default is 30 seconds. */ public static final ReplicationTimeoutType CHECKPOINT_DELAY = new ReplicationTimeoutType("CHECKPOINT_DELAY", DbConstants.DB_REP_CHECKPOINT_DELAY); /** Configure the amount of time the replication manager will wait before trying to re-establish a connection to another site after a communication failure. */ public static final ReplicationTimeoutType CONNECTION_RETRY = new ReplicationTimeoutType("CONNECTION_RETRY", DbConstants.DB_REP_CONNECTION_RETRY); /** The timeout period for an election. */ public static final ReplicationTimeoutType ELECTION_TIMEOUT = new ReplicationTimeoutType("ELECTION_TIMEOUT", DbConstants.DB_REP_ELECTION_TIMEOUT); /** Configure the amount of time the replication manager will wait before retrying a failed election. */ public static final ReplicationTimeoutType ELECTION_RETRY = new ReplicationTimeoutType("ELECTION_RETRY", DbConstants.DB_REP_ELECTION_RETRY); /** The amount of time the replication manager, running at a client site, waits for some message activity on the connection from the master (heartbeats or other messages) before concluding that the connection has been lost. When 0 (the default), no monitoring is performed. */ public static final ReplicationTimeoutType HEARTBEAT_MONITOR = new ReplicationTimeoutType("HEARTBEAT_MONITOR", DbConstants.DB_REP_HEARTBEAT_MONITOR); /** The frequency at which the replication manager, running at a master site, broadcasts a heartbeat message in an otherwise idle system. When 0 (the default), no heartbeat messages will be sent. */ public static final ReplicationTimeoutType HEARTBEAT_SEND = new ReplicationTimeoutType("HEARTBEAT_SEND", DbConstants.DB_REP_HEARTBEAT_SEND); /** An optional configuration timeout period to wait for full election participation the first time the replication group finds a master. By default this option is turned off and normal election timeouts are used. (See the <a href="{@docRoot}/../programmer_reference/rep_elect.html">Elections</a> section in the Berkeley DB Reference Guide for more information.) */ public static final ReplicationTimeoutType FULL_ELECTION_TIMEOUT = new ReplicationTimeoutType("FULL_ELECTION_TIMEOUT", DbConstants.DB_REP_FULL_ELECTION_TIMEOUT); /** Configure the amount of time a client grants its master lease to a master. When using master leases all sites in a replication group must use the same lease timeout value. There is no default value. If leases are desired, this timeout must be configured prior to calling {@link com.sleepycat.db.Environment#startReplication Environment.startReplication}. */ public static final ReplicationTimeoutType LEASE_TIMEOUT = new ReplicationTimeoutType("LEASE_TIMEOUT", DbConstants.DB_REP_LEASE_TIMEOUT); /* package */ static ReplicationTimeoutType fromInt(int type) { switch(type) { case DbConstants.DB_REP_ACK_TIMEOUT: return ACK_TIMEOUT; case DbConstants.DB_REP_ELECTION_TIMEOUT: return ELECTION_TIMEOUT; case DbConstants.DB_REP_ELECTION_RETRY: return ELECTION_RETRY; case DbConstants.DB_REP_CONNECTION_RETRY: return CONNECTION_RETRY; case DbConstants.DB_REP_LEASE_TIMEOUT: return LEASE_TIMEOUT; default: throw new IllegalArgumentException( "Unknown timeout type: " + type); } } private String statusName; private int id; private ReplicationTimeoutType(final String statusName, final int id) { this.statusName = statusName; this.id = id; } /* package */ int getId() { return id; } /** {@inheritDoc} */ public String toString() { return "ReplicationTimeoutType." + statusName; } }