|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectcom.sleepycat.je.utilint.Adler32
public class Adler32
Adler32 checksum implementation. This class is used rather than the native java.util.zip.Adler32 class because we have seen a JIT problem when calling the Adler32 class using the Server JVM on Linux and Solaris. Specifically, we suspect this may be Bug Parade number 4965907. See SR [#9376]. We also believe that this bug is fixed in Java 5 and therefore only use this class conditionally if we find that we're in a 1.4 JVM. [#13354]. The Adler32 checksum is discussed in RFC1950. The sample implementation from this RFC is shown below:
#define BASE 65521 largest prime smaller than 65536
unsigned long update_adler32(unsigned long adler,
unsigned char *buf, int len)
{
unsigned long s1 = adler & 0xffff;
unsigned long s2 = (adler >> 16) & 0xffff;
int n;
for (n = 0; n < len; n++) {
s1 = (s1 + buf[n]) % BASE;
s2 = (s2 + s1) % BASE;
}
return (s2 << 16) + s1;
}
unsigned long adler32(unsigned char *buf, int len)
{
return update_adler32(1L, buf, len);
}
The NMAX optimization is so that we don't have to do modulo calculations
on every iteration. NMAX is the max number of additions to make
before you have to perform the modulo calculation.
| Constructor Summary | |
|---|---|
Adler32()
|
|
| Method Summary | |
|---|---|
long |
getValue()
Returns current checksum value. |
static Checksum |
makeChecksum()
|
void |
reset()
Reset Adler-32 checksum to initial value. |
void |
update(byte[] b,
int off,
int len)
Update current Adler-32 checksum given the specified byte array. |
void |
update(int b)
Update current Adler-32 checksum given the specified byte. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public Adler32()
| Method Detail |
|---|
public static Checksum makeChecksum()
public void update(int b)
update in interface Checksum
public void update(byte[] b,
int off,
int len)
update in interface Checksumpublic void reset()
reset in interface Checksumpublic long getValue()
getValue in interface Checksum
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||