From 11859d9a6e466bab4ab73e1e46d092c6052acf68 Mon Sep 17 00:00:00 2001
From: coulbeck <coulbeck@localhost>
Date: Fri, 02 Feb 2007 21:50:10 +0000
Subject: [PATCH] These changes are for issue 787: LDAP server need to detect failure of changelog servers
---
opendj-sdk/opends/src/server/org/opends/server/synchronization/protocol/ServerStartMessage.java | 40 +++++++++++++++++++++++++++++++++++++---
1 files changed, 37 insertions(+), 3 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/synchronization/protocol/ServerStartMessage.java b/opendj-sdk/opends/src/server/org/opends/server/synchronization/protocol/ServerStartMessage.java
index 48b6c74..97cf84c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/synchronization/protocol/ServerStartMessage.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/synchronization/protocol/ServerStartMessage.java
@@ -57,6 +57,12 @@
private ServerState serverState = null;
/**
+ * The time in milliseconds between heartbeats from the synchronization
+ * server. Zero means heartbeats are off.
+ */
+ private long heartbeatInterval = 0;
+
+ /**
* Create a new ServerStartMessage.
*
* @param serverId The serverId of the server for which the ServerStartMessage
@@ -67,11 +73,13 @@
* @param maxSendDelay The max Send Delay from this server.
* @param maxSendQueue The max send Queue from this server.
* @param windowSize The window size used by this server.
+ * @param heartbeatInterval The requested heartbeat interval.
* @param serverState The state of this server.
*/
public ServerStartMessage(short serverId, DN baseDn, int maxReceiveDelay,
int maxReceiveQueue, int maxSendDelay,
int maxSendQueue, int windowSize,
+ long heartbeatInterval,
ServerState serverState)
{
this.serverId = serverId;
@@ -80,8 +88,10 @@
this.maxReceiveQueue = maxReceiveQueue;
this.maxSendDelay = maxSendDelay;
this.maxSendQueue = maxSendQueue;
- this.serverState = serverState;
this.windowSize = windowSize;
+ this.heartbeatInterval = heartbeatInterval;
+
+ this.serverState = serverState;
try
{
@@ -105,7 +115,7 @@
{
/* The ServerStartMessage is encoded in the form :
* <operation type><baseDn><ServerId><ServerUrl><maxRecvDelay><maxRecvQueue>
- * <maxSendDelay><maxSendQueue><window><ServerState>
+ * <maxSendDelay><maxSendQueue><window><heartbeatInterval><ServerState>
*/
try
{
@@ -173,6 +183,13 @@
pos += length +1;
/*
+ * read the heartbeatInterval
+ */
+ length = getNextLength(in, pos);
+ heartbeatInterval = Integer.valueOf(new String(in, pos, length, "UTF-8"));
+ pos += length +1;
+
+ /*
* read the ServerState
*/
serverState = new ServerState(in, pos, in.length-1);
@@ -269,7 +286,7 @@
/*
* ServerStartMessage contains.
* <baseDn><ServerId><ServerUrl><maxRecvDelay><maxRecvQueue>
- * <maxSendDelay><maxSendQueue><windowsize><ServerState>
+ * <maxSendDelay><maxSendQueue><windowsize><heartbeatInterval><ServerState>
*/
try {
byte[] byteDn = baseDn.getBytes("UTF-8");
@@ -285,6 +302,8 @@
String.valueOf(maxSendQueue).getBytes("UTF-8");
byte[] byteWindowSize =
String.valueOf(windowSize).getBytes("UTF-8");
+ byte[] byteHeartbeatInterval =
+ String.valueOf(heartbeatInterval).getBytes("UTF-8");
byte[] byteServerState = serverState.getBytes();
int length = 1 + byteDn.length + 1 + byteServerId.length + 1 +
@@ -294,6 +313,7 @@
byteMaxSendDelay.length + 1 +
byteMaxSendQueue.length + 1 +
byteWindowSize.length + 1 +
+ byteHeartbeatInterval.length + 1 +
byteServerState.length + 1;
byte[] resultByteArray = new byte[length];
@@ -318,6 +338,8 @@
pos = addByteArray(byteWindowSize, resultByteArray, pos);
+ pos = addByteArray(byteHeartbeatInterval, resultByteArray, pos);
+
pos = addByteArray(byteServerState, resultByteArray, pos);
return resultByteArray;
@@ -337,4 +359,16 @@
{
return windowSize;
}
+
+ /**
+ * Get the heartbeat interval requested by the ldap server that created the
+ * message.
+ *
+ * @return The heartbeat interval requested by the ldap server that created
+ * the message.
+ */
+ public long getHeartbeatInterval()
+ {
+ return heartbeatInterval;
+ }
}
--
Gitblit v1.10.0