@SuppressWarnings("unchecked") // We correctly assign various generic arrays
public class ChannelMessageHandler extends CommonBase {
final bindings.LDKChannelMessageHandler bindings_instance;
@SuppressWarnings("unchecked") // We correctly assign various generic arrays
public class ChannelMessageHandler extends CommonBase {
final bindings.LDKChannelMessageHandler bindings_instance;
+ /**
+ * Indicates a connection to the peer failed/an existing connection was lost. If no connection
+ * is believed to be possible in the future (eg they're sending us messages we don't
+ * understand or indicate they require unknown feature bits), no_connection_possible is set
+ * and any outstanding channels should be failed.
+ */
void handle_error(byte[] their_node_id, ErrorMessage msg);
}
private static class LDKChannelMessageHandlerHolder { ChannelMessageHandler held; }
void handle_error(byte[] their_node_id, ErrorMessage msg);
}
private static class LDKChannelMessageHandlerHolder { ChannelMessageHandler held; }
final LDKChannelMessageHandlerHolder impl_holder = new LDKChannelMessageHandlerHolder();
impl_holder.held = new ChannelMessageHandler(new bindings.LDKChannelMessageHandler() {
@Override public void handle_open_channel(byte[] their_node_id, long their_features, long msg) {
final LDKChannelMessageHandlerHolder impl_holder = new LDKChannelMessageHandlerHolder();
impl_holder.held = new ChannelMessageHandler(new bindings.LDKChannelMessageHandler() {
@Override public void handle_open_channel(byte[] their_node_id, long their_features, long msg) {
arg.handle_open_channel(their_node_id, their_features_hu_conv, msg_hu_conv);
}
@Override public void handle_accept_channel(byte[] their_node_id, long their_features, long msg) {
arg.handle_open_channel(their_node_id, their_features_hu_conv, msg_hu_conv);
}
@Override public void handle_accept_channel(byte[] their_node_id, long their_features, long msg) {
arg.handle_accept_channel(their_node_id, their_features_hu_conv, msg_hu_conv);
}
@Override public void handle_funding_created(byte[] their_node_id, long msg) {
arg.handle_accept_channel(their_node_id, their_features_hu_conv, msg_hu_conv);
}
@Override public void handle_funding_created(byte[] their_node_id, long msg) {
arg.handle_funding_created(their_node_id, msg_hu_conv);
}
@Override public void handle_funding_signed(byte[] their_node_id, long msg) {
arg.handle_funding_created(their_node_id, msg_hu_conv);
}
@Override public void handle_funding_signed(byte[] their_node_id, long msg) {
arg.handle_funding_signed(their_node_id, msg_hu_conv);
}
@Override public void handle_funding_locked(byte[] their_node_id, long msg) {
arg.handle_funding_signed(their_node_id, msg_hu_conv);
}
@Override public void handle_funding_locked(byte[] their_node_id, long msg) {
arg.handle_funding_locked(their_node_id, msg_hu_conv);
}
@Override public void handle_shutdown(byte[] their_node_id, long their_features, long msg) {
arg.handle_funding_locked(their_node_id, msg_hu_conv);
}
@Override public void handle_shutdown(byte[] their_node_id, long their_features, long msg) {
- InitFeatures their_features_hu_conv = new InitFeatures(null, their_features);
- Shutdown msg_hu_conv = new Shutdown(null, msg);
+ InitFeatures their_features_hu_conv = null; if (their_features < 0 || their_features > 4096) { their_features_hu_conv = new InitFeatures(null, their_features); }
+ Shutdown msg_hu_conv = null; if (msg < 0 || msg > 4096) { msg_hu_conv = new Shutdown(null, msg); }
arg.handle_shutdown(their_node_id, their_features_hu_conv, msg_hu_conv);
}
@Override public void handle_closing_signed(byte[] their_node_id, long msg) {
arg.handle_shutdown(their_node_id, their_features_hu_conv, msg_hu_conv);
}
@Override public void handle_closing_signed(byte[] their_node_id, long msg) {
arg.handle_closing_signed(their_node_id, msg_hu_conv);
}
@Override public void handle_update_add_htlc(byte[] their_node_id, long msg) {
arg.handle_closing_signed(their_node_id, msg_hu_conv);
}
@Override public void handle_update_add_htlc(byte[] their_node_id, long msg) {
arg.handle_update_add_htlc(their_node_id, msg_hu_conv);
}
@Override public void handle_update_fulfill_htlc(byte[] their_node_id, long msg) {
arg.handle_update_add_htlc(their_node_id, msg_hu_conv);
}
@Override public void handle_update_fulfill_htlc(byte[] their_node_id, long msg) {
arg.handle_update_fulfill_htlc(their_node_id, msg_hu_conv);
}
@Override public void handle_update_fail_htlc(byte[] their_node_id, long msg) {
arg.handle_update_fulfill_htlc(their_node_id, msg_hu_conv);
}
@Override public void handle_update_fail_htlc(byte[] their_node_id, long msg) {
arg.handle_update_fail_htlc(their_node_id, msg_hu_conv);
}
@Override public void handle_update_fail_malformed_htlc(byte[] their_node_id, long msg) {
arg.handle_update_fail_htlc(their_node_id, msg_hu_conv);
}
@Override public void handle_update_fail_malformed_htlc(byte[] their_node_id, long msg) {
arg.handle_update_fail_malformed_htlc(their_node_id, msg_hu_conv);
}
@Override public void handle_commitment_signed(byte[] their_node_id, long msg) {
arg.handle_update_fail_malformed_htlc(their_node_id, msg_hu_conv);
}
@Override public void handle_commitment_signed(byte[] their_node_id, long msg) {
arg.handle_commitment_signed(their_node_id, msg_hu_conv);
}
@Override public void handle_revoke_and_ack(byte[] their_node_id, long msg) {
arg.handle_commitment_signed(their_node_id, msg_hu_conv);
}
@Override public void handle_revoke_and_ack(byte[] their_node_id, long msg) {
arg.handle_revoke_and_ack(their_node_id, msg_hu_conv);
}
@Override public void handle_update_fee(byte[] their_node_id, long msg) {
arg.handle_revoke_and_ack(their_node_id, msg_hu_conv);
}
@Override public void handle_update_fee(byte[] their_node_id, long msg) {
arg.handle_update_fee(their_node_id, msg_hu_conv);
}
@Override public void handle_announcement_signatures(byte[] their_node_id, long msg) {
arg.handle_update_fee(their_node_id, msg_hu_conv);
}
@Override public void handle_announcement_signatures(byte[] their_node_id, long msg) {
arg.handle_announcement_signatures(their_node_id, msg_hu_conv);
}
@Override public void peer_disconnected(byte[] their_node_id, boolean no_connection_possible) {
arg.peer_disconnected(their_node_id, no_connection_possible);
}
@Override public void peer_connected(byte[] their_node_id, long msg) {
arg.handle_announcement_signatures(their_node_id, msg_hu_conv);
}
@Override public void peer_disconnected(byte[] their_node_id, boolean no_connection_possible) {
arg.peer_disconnected(their_node_id, no_connection_possible);
}
@Override public void peer_connected(byte[] their_node_id, long msg) {
arg.peer_connected(their_node_id, msg_hu_conv);
}
@Override public void handle_channel_reestablish(byte[] their_node_id, long msg) {
arg.peer_connected(their_node_id, msg_hu_conv);
}
@Override public void handle_channel_reestablish(byte[] their_node_id, long msg) {
+ @Override public void handle_channel_update(byte[] their_node_id, long msg) {
+ ChannelUpdate msg_hu_conv = null; if (msg < 0 || msg > 4096) { msg_hu_conv = new ChannelUpdate(null, msg); }
+ arg.handle_channel_update(their_node_id, msg_hu_conv);
+ }
arg.handle_error(their_node_id, msg_hu_conv);
}
}, MessageSendEventsProvider.new_impl(MessageSendEventsProvider_impl).bindings_instance);
return impl_holder.held;
}
arg.handle_error(their_node_id, msg_hu_conv);
}
}, MessageSendEventsProvider.new_impl(MessageSendEventsProvider_impl).bindings_instance);
return impl_holder.held;
}
+
+ /**
+ * Gets the underlying MessageSendEventsProvider.
+ */
+ public MessageSendEventsProvider get_message_send_events_provider() {
+ MessageSendEventsProvider res = new MessageSendEventsProvider(null, bindings.LDKChannelMessageHandler_get_MessageSendEventsProvider(this.ptr));
+ this.ptrs_to.add(res);
+ return res;
+ }
+
+ /**
+ * Handle an incoming open_channel message from the given peer.
+ */
public void handle_open_channel(byte[] their_node_id, InitFeatures their_features, OpenChannel msg) {
bindings.ChannelMessageHandler_handle_open_channel(this.ptr, their_node_id, their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1);
public void handle_open_channel(byte[] their_node_id, InitFeatures their_features, OpenChannel msg) {
bindings.ChannelMessageHandler_handle_open_channel(this.ptr, their_node_id, their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1);
public void handle_accept_channel(byte[] their_node_id, InitFeatures their_features, AcceptChannel msg) {
bindings.ChannelMessageHandler_handle_accept_channel(this.ptr, their_node_id, their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1);
public void handle_accept_channel(byte[] their_node_id, InitFeatures their_features, AcceptChannel msg) {
bindings.ChannelMessageHandler_handle_accept_channel(this.ptr, their_node_id, their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1);
public void handle_funding_created(byte[] their_node_id, FundingCreated msg) {
bindings.ChannelMessageHandler_handle_funding_created(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_funding_created(byte[] their_node_id, FundingCreated msg) {
bindings.ChannelMessageHandler_handle_funding_created(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_funding_signed(byte[] their_node_id, FundingSigned msg) {
bindings.ChannelMessageHandler_handle_funding_signed(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_funding_signed(byte[] their_node_id, FundingSigned msg) {
bindings.ChannelMessageHandler_handle_funding_signed(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_funding_locked(byte[] their_node_id, FundingLocked msg) {
bindings.ChannelMessageHandler_handle_funding_locked(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_funding_locked(byte[] their_node_id, FundingLocked msg) {
bindings.ChannelMessageHandler_handle_funding_locked(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_shutdown(byte[] their_node_id, InitFeatures their_features, Shutdown msg) {
bindings.ChannelMessageHandler_handle_shutdown(this.ptr, their_node_id, their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(their_features);
this.ptrs_to.add(msg);
}
public void handle_shutdown(byte[] their_node_id, InitFeatures their_features, Shutdown msg) {
bindings.ChannelMessageHandler_handle_shutdown(this.ptr, their_node_id, their_features == null ? 0 : their_features.ptr & ~1, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(their_features);
this.ptrs_to.add(msg);
}
public void handle_closing_signed(byte[] their_node_id, ClosingSigned msg) {
bindings.ChannelMessageHandler_handle_closing_signed(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_closing_signed(byte[] their_node_id, ClosingSigned msg) {
bindings.ChannelMessageHandler_handle_closing_signed(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_update_add_htlc(byte[] their_node_id, UpdateAddHTLC msg) {
bindings.ChannelMessageHandler_handle_update_add_htlc(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_update_add_htlc(byte[] their_node_id, UpdateAddHTLC msg) {
bindings.ChannelMessageHandler_handle_update_add_htlc(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_update_fulfill_htlc(byte[] their_node_id, UpdateFulfillHTLC msg) {
bindings.ChannelMessageHandler_handle_update_fulfill_htlc(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_update_fulfill_htlc(byte[] their_node_id, UpdateFulfillHTLC msg) {
bindings.ChannelMessageHandler_handle_update_fulfill_htlc(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_update_fail_htlc(byte[] their_node_id, UpdateFailHTLC msg) {
bindings.ChannelMessageHandler_handle_update_fail_htlc(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_update_fail_htlc(byte[] their_node_id, UpdateFailHTLC msg) {
bindings.ChannelMessageHandler_handle_update_fail_htlc(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_update_fail_malformed_htlc(byte[] their_node_id, UpdateFailMalformedHTLC msg) {
bindings.ChannelMessageHandler_handle_update_fail_malformed_htlc(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_update_fail_malformed_htlc(byte[] their_node_id, UpdateFailMalformedHTLC msg) {
bindings.ChannelMessageHandler_handle_update_fail_malformed_htlc(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_commitment_signed(byte[] their_node_id, CommitmentSigned msg) {
bindings.ChannelMessageHandler_handle_commitment_signed(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_commitment_signed(byte[] their_node_id, CommitmentSigned msg) {
bindings.ChannelMessageHandler_handle_commitment_signed(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_revoke_and_ack(byte[] their_node_id, RevokeAndACK msg) {
bindings.ChannelMessageHandler_handle_revoke_and_ack(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_revoke_and_ack(byte[] their_node_id, RevokeAndACK msg) {
bindings.ChannelMessageHandler_handle_revoke_and_ack(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_update_fee(byte[] their_node_id, UpdateFee msg) {
bindings.ChannelMessageHandler_handle_update_fee(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_update_fee(byte[] their_node_id, UpdateFee msg) {
bindings.ChannelMessageHandler_handle_update_fee(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_announcement_signatures(byte[] their_node_id, AnnouncementSignatures msg) {
bindings.ChannelMessageHandler_handle_announcement_signatures(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_announcement_signatures(byte[] their_node_id, AnnouncementSignatures msg) {
bindings.ChannelMessageHandler_handle_announcement_signatures(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
+ /**
+ * Indicates a connection to the peer failed/an existing connection was lost. If no connection
+ * is believed to be possible in the future (eg they're sending us messages we don't
+ * understand or indicate they require unknown feature bits), no_connection_possible is set
+ * and any outstanding channels should be failed.
+ */
public void peer_disconnected(byte[] their_node_id, boolean no_connection_possible) {
bindings.ChannelMessageHandler_peer_disconnected(this.ptr, their_node_id, no_connection_possible);
}
public void peer_disconnected(byte[] their_node_id, boolean no_connection_possible) {
bindings.ChannelMessageHandler_peer_disconnected(this.ptr, their_node_id, no_connection_possible);
}
public void peer_connected(byte[] their_node_id, Init msg) {
bindings.ChannelMessageHandler_peer_connected(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void peer_connected(byte[] their_node_id, Init msg) {
bindings.ChannelMessageHandler_peer_connected(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_channel_reestablish(byte[] their_node_id, ChannelReestablish msg) {
bindings.ChannelMessageHandler_handle_channel_reestablish(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
public void handle_channel_reestablish(byte[] their_node_id, ChannelReestablish msg) {
bindings.ChannelMessageHandler_handle_channel_reestablish(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
}
+ /**
+ * Handle an incoming channel update from the given peer.
+ */
+ public void handle_channel_update(byte[] their_node_id, ChannelUpdate msg) {
+ bindings.ChannelMessageHandler_handle_channel_update(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
+ this.ptrs_to.add(msg);
+ }
+
+ /**
+ * Handle an incoming error message from the given peer.
+ */
public void handle_error(byte[] their_node_id, ErrorMessage msg) {
bindings.ChannelMessageHandler_handle_error(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);
public void handle_error(byte[] their_node_id, ErrorMessage msg) {
bindings.ChannelMessageHandler_handle_error(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
this.ptrs_to.add(msg);