diff --git a/core/src/main/java/com/google/bitcoin/jni/NativeBlockChainListener.java b/core/src/main/java/com/google/bitcoin/jni/NativeBlockChainListener.java new file mode 100644 index 00000000..539d883a --- /dev/null +++ b/core/src/main/java/com/google/bitcoin/jni/NativeBlockChainListener.java @@ -0,0 +1,45 @@ +/** + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.bitcoin.jni; + +import com.google.bitcoin.core.*; + +import java.util.List; + +/** + * An event listener that relays events to a native C++ object. A pointer to that object is stored in + * this class using JNI on the native side, thus several instances of this can point to different actual + * native implementations. + */ +public class NativeBlockChainListener implements BlockChainListener { + public long ptr; + + @Override + public native void notifyNewBestBlock(StoredBlock block) throws VerificationException; + + @Override + public native void reorganize(StoredBlock splitPoint, List oldBlocks, List newBlocks) throws VerificationException; + + @Override + public native boolean isTransactionRelevant(Transaction tx) throws ScriptException; + + @Override + public native void receiveFromBlock(Transaction tx, StoredBlock block, BlockChain.NewBlockType blockType) throws VerificationException; + + @Override + public native void notifyTransactionIsInBlock(Sha256Hash txHash, StoredBlock block, BlockChain.NewBlockType blockType) throws VerificationException; +} diff --git a/core/src/main/java/com/google/bitcoin/jni/NativeFutureCallback.java b/core/src/main/java/com/google/bitcoin/jni/NativeFutureCallback.java new file mode 100644 index 00000000..b8fdefe0 --- /dev/null +++ b/core/src/main/java/com/google/bitcoin/jni/NativeFutureCallback.java @@ -0,0 +1,34 @@ +/** + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.bitcoin.jni; + +import com.google.common.util.concurrent.FutureCallback; + +/** + * An event listener that relays events to a native C++ object. A pointer to that object is stored in + * this class using JNI on the native side, thus several instances of this can point to different actual + * native implementations. + */ +public class NativeFutureCallback implements FutureCallback { + public long ptr; + + @Override + public native void onSuccess(Object o); + + @Override + public native void onFailure(Throwable throwable); +} diff --git a/core/src/main/java/com/google/bitcoin/jni/NativePeerEventListener.java b/core/src/main/java/com/google/bitcoin/jni/NativePeerEventListener.java new file mode 100644 index 00000000..a218303b --- /dev/null +++ b/core/src/main/java/com/google/bitcoin/jni/NativePeerEventListener.java @@ -0,0 +1,51 @@ +/** + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.bitcoin.jni; + +import com.google.bitcoin.core.*; + +import java.util.List; + +/** + * An event listener that relays events to a native C++ object. A pointer to that object is stored in + * this class using JNI on the native side, thus several instances of this can point to different actual + * native implementations. + */ +public class NativePeerEventListener implements PeerEventListener { + public long ptr; + + @Override + public native void onBlocksDownloaded(Peer peer, Block block, int blocksLeft); + + @Override + public native void onChainDownloadStarted(Peer peer, int blocksLeft); + + @Override + public native void onPeerConnected(Peer peer, int peerCount); + + @Override + public native void onPeerDisconnected(Peer peer, int peerCount); + + @Override + public native Message onPreMessageReceived(Peer peer, Message m); + + @Override + public native void onTransaction(Peer peer, Transaction t); + + @Override + public native List getData(Peer peer, GetDataMessage m); +} diff --git a/core/src/main/java/com/google/bitcoin/jni/NativeTransactionConfidenceListener.java b/core/src/main/java/com/google/bitcoin/jni/NativeTransactionConfidenceListener.java new file mode 100644 index 00000000..fad68763 --- /dev/null +++ b/core/src/main/java/com/google/bitcoin/jni/NativeTransactionConfidenceListener.java @@ -0,0 +1,32 @@ +/** + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.bitcoin.jni; + +import com.google.bitcoin.core.Transaction; +import com.google.bitcoin.core.TransactionConfidence; + +/** + * An event listener that relays events to a native C++ object. A pointer to that object is stored in + * this class using JNI on the native side, thus several instances of this can point to different actual + * native implementations. + */ +public class NativeTransactionConfidenceListener implements TransactionConfidence.Listener { + public long ptr; + + @Override + public native void onConfidenceChanged(Transaction tx, ChangeReason reason); +} diff --git a/core/src/main/java/com/google/bitcoin/jni/NativeWalletEventListener.java b/core/src/main/java/com/google/bitcoin/jni/NativeWalletEventListener.java new file mode 100644 index 00000000..0afc11ef --- /dev/null +++ b/core/src/main/java/com/google/bitcoin/jni/NativeWalletEventListener.java @@ -0,0 +1,52 @@ +/** + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.bitcoin.jni; + +import com.google.bitcoin.core.ECKey; +import com.google.bitcoin.core.Transaction; +import com.google.bitcoin.core.Wallet; +import com.google.bitcoin.core.WalletEventListener; + +import java.math.BigInteger; +import java.util.List; + +/** + * An event listener that relays events to a native C++ object. A pointer to that object is stored in + * this class using JNI on the native side, thus several instances of this can point to different actual + * native implementations. + */ +public class NativeWalletEventListener implements WalletEventListener { + public long ptr; + + @Override + public native void onCoinsReceived(Wallet wallet, Transaction tx, BigInteger prevBalance, BigInteger newBalance); + + @Override + public native void onCoinsSent(Wallet wallet, Transaction tx, BigInteger prevBalance, BigInteger newBalance); + + @Override + public native void onReorganize(Wallet wallet); + + @Override + public native void onTransactionConfidenceChanged(Wallet wallet, Transaction tx); + + @Override + public native void onWalletChanged(Wallet wallet); + + @Override + public native void onKeysAdded(Wallet wallet, List keys); +}