| | |
| | | public class ReplServerInfoMessage extends ReplicationMessage |
| | | { |
| | | private List<String> connectedServers = null; |
| | | private long generationId; |
| | | |
| | | /** |
| | | * Creates a new changelogInfo message from its encoded form. |
| | |
| | | throw new DataFormatException( |
| | | "Input is not a valid changelogInfo Message."); |
| | | |
| | | connectedServers = new ArrayList<String>(); |
| | | int pos = 1; |
| | | |
| | | /* read the generationId */ |
| | | int length = getNextLength(in, pos); |
| | | generationId = Long.valueOf(new String(in, pos, length, |
| | | "UTF-8")); |
| | | pos += length +1; |
| | | |
| | | /* read the connected servers */ |
| | | connectedServers = new ArrayList<String>(); |
| | | while (pos < in.length) |
| | | { |
| | | /* |
| | | * Read the next server ID |
| | | * first calculate the length then construct the string |
| | | */ |
| | | int length = getNextLength(in, pos); |
| | | length = getNextLength(in, pos); |
| | | connectedServers.add(new String(in, pos, length, "UTF-8")); |
| | | pos += length +1; |
| | | } |
| | |
| | | * connected servers. |
| | | * |
| | | * @param connectedServers The list of currently connected servers ID. |
| | | * @param generationId The generationId currently associated with this |
| | | * domain. |
| | | */ |
| | | public ReplServerInfoMessage(List<String> connectedServers) |
| | | public ReplServerInfoMessage(List<String> connectedServers, |
| | | long generationId) |
| | | { |
| | | this.connectedServers = connectedServers; |
| | | this.generationId = generationId; |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | /* Put the message type */ |
| | | oStream.write(MSG_TYPE_REPL_SERVER_INFO); |
| | | |
| | | // Put the generationId |
| | | oStream.write(String.valueOf(generationId).getBytes("UTF-8")); |
| | | oStream.write(0); |
| | | |
| | | // Put the servers |
| | | if (connectedServers.size() >= 1) |
| | | { |
| | | for (String server : connectedServers) |
| | |
| | | oStream.write(0); |
| | | } |
| | | } |
| | | |
| | | return oStream.toByteArray(); |
| | | } |
| | | catch (IOException e) |
| | |
| | | { |
| | | return connectedServers; |
| | | } |
| | | |
| | | /** |
| | | * Get the generationId from this message. |
| | | * @return The generationId. |
| | | */ |
| | | public long getGenerationId() |
| | | { |
| | | return generationId; |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public String toString() |
| | | { |
| | | String csrvs = ""; |
| | | for (String s : connectedServers) |
| | | { |
| | | csrvs += s + "/"; |
| | | } |
| | | return ("ReplServerInfoMessage: genId=" + getGenerationId() + |
| | | " Connected peers:" + csrvs); |
| | | } |
| | | |
| | | } |