Skip to content

Commit

Permalink
convenience methods to test Discriminator equality.
Browse files Browse the repository at this point in the history
  • Loading branch information
jpe7s committed Sep 18, 2024
1 parent e66e631 commit 995b225
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package software.sava.core.programs;

import software.sava.core.encoding.ByteUtil;
import software.sava.core.tx.Instruction;

public interface Discriminator {
import java.util.function.Predicate;

public interface Discriminator extends Predicate<Instruction> {

int NATIVE_DISCRIMINATOR_LENGTH = Integer.BYTES;

Expand Down Expand Up @@ -53,4 +56,6 @@ default int write(final byte[] bytes, final int i) {
default int length() {
return data().length;
}

boolean equals(final byte[] data, final int offset);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package software.sava.core.programs;

import software.sava.core.tx.Instruction;

import java.util.Arrays;

record DiscriminatorRecord(byte[] data) implements Discriminator {
Expand Down Expand Up @@ -43,4 +45,21 @@ public boolean equals(final Object o) {
public int hashCode() {
return Arrays.hashCode(data);
}

@Override
public boolean equals(final byte[] data, final int offset) {
final int len = data.length - offset;
return len >= data.length && Arrays.equals(
data, 0, data.length,
data, offset, offset + data.length
);
}

@Override
public boolean test(final Instruction ix) {
return ix.len() >= data.length && Arrays.equals(
data, 0, data.length,
ix.data(), ix.offset(), ix.offset() + data.length
);
}
}
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ dependencyResolutionManagement {
}
versionCatalogs {
libs {
from("software.sava:solana-version-catalog:0.0.34")
from("software.sava:solana-version-catalog:0.1.6")
}
}
}

0 comments on commit 995b225

Please sign in to comment.