| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Copyright 2008 Sun Microsystems, Inc. |
| | | * Copyright 2008-2010 Sun Microsystems, Inc. |
| | | */ |
| | | package org.opends.server.replication.plugin; |
| | | |
| | |
| | | private long checksum = 0L; |
| | | |
| | | /** |
| | | * This is the generation id for an empty backend. |
| | | */ |
| | | public static final long EMPTY_BACKEND_GENERATION_ID = 48L; |
| | | |
| | | /** |
| | | * Update the checksum with one added byte. |
| | | */ |
| | | private void updateWithOneByte(byte b) |
| | | { |
| | | checksum += (long) b; |
| | | /** |
| | | * The "end of line" code is CRLF under windows but LF on UNIX. So to get |
| | | * the same checksum value on every platforms, we always exclude the CR and |
| | | * LF characters from the computation. |
| | | */ |
| | | if ((b != 0x0D) && (b != 0x0A)) // CR=0D and LF=0A |
| | | { |
| | | checksum += (long) b; |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | public long getValue() |
| | | { |
| | | return checksum; |
| | | if (checksum != 0L) |
| | | { |
| | | return checksum; |
| | | } else |
| | | { |
| | | // Computing an empty backend writes the number of entries (0) only, which |
| | | // will not be added to the checksum as no entries will follow. To treat |
| | | // this special case, and to keep consistency with old versions, in that |
| | | // case we hardcode and return the generation id value for an empty |
| | | // backend. |
| | | return EMPTY_BACKEND_GENERATION_ID; |
| | | } |
| | | } |
| | | |
| | | /** |