- public void handle_htlc_fail_channel_update(HTLCFailChannelUpdate update) {
- bindings.RoutingMessageHandler_handle_htlc_fail_channel_update(this.ptr, update == null ? 0 : update.ptr & ~1);
- this.ptrs_to.add(update);
- }
-
- public ThreeTuple<ChannelAnnouncement, ChannelUpdate, ChannelUpdate>[] get_next_channel_announcements(long starting_point, byte batch_amount) {
- long[] ret = bindings.RoutingMessageHandler_get_next_channel_announcements(this.ptr, starting_point, batch_amount);
- ThreeTuple<ChannelAnnouncement, ChannelUpdate, ChannelUpdate>[] arr_conv_63_arr = new ThreeTuple[ret.length];
- for (int l = 0; l < ret.length; l++) {
- long arr_conv_63 = ret[l];
- long arr_conv_63_a = bindings.LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(arr_conv_63);
- ChannelAnnouncement arr_conv_63_a_hu_conv = new ChannelAnnouncement(null, arr_conv_63_a);
- arr_conv_63_a_hu_conv.ptrs_to.add(this);;
- long arr_conv_63_b = bindings.LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(arr_conv_63);
- ChannelUpdate arr_conv_63_b_hu_conv = new ChannelUpdate(null, arr_conv_63_b);
- arr_conv_63_b_hu_conv.ptrs_to.add(this);;
- long arr_conv_63_c = bindings.LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(arr_conv_63);
- ChannelUpdate arr_conv_63_c_hu_conv = new ChannelUpdate(null, arr_conv_63_c);
- arr_conv_63_c_hu_conv.ptrs_to.add(this);;
- ThreeTuple<ChannelAnnouncement, ChannelUpdate, ChannelUpdate> arr_conv_63_conv = new ThreeTuple<ChannelAnnouncement, ChannelUpdate, ChannelUpdate>(arr_conv_63_a_hu_conv, arr_conv_63_b_hu_conv, arr_conv_63_c_hu_conv, () -> {
- bindings.C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(arr_conv_63);
- });
- arr_conv_63_a_hu_conv.ptrs_to.add(arr_conv_63_conv);
- arr_conv_63_b_hu_conv.ptrs_to.add(arr_conv_63_conv);
- arr_conv_63_c_hu_conv.ptrs_to.add(arr_conv_63_conv);
- arr_conv_63_arr[l] = arr_conv_63_conv;
- }
- return arr_conv_63_arr;
- }
-
- public NodeAnnouncement[] get_next_node_announcements(byte[] starting_point, byte batch_amount) {
- long[] ret = bindings.RoutingMessageHandler_get_next_node_announcements(this.ptr, starting_point, batch_amount);
- NodeAnnouncement[] arr_conv_18_arr = new NodeAnnouncement[ret.length];
- for (int s = 0; s < ret.length; s++) {
- long arr_conv_18 = ret[s];
- NodeAnnouncement arr_conv_18_hu_conv = new NodeAnnouncement(null, arr_conv_18);
- arr_conv_18_hu_conv.ptrs_to.add(this);
- arr_conv_18_arr[s] = arr_conv_18_hu_conv;
- }
- return arr_conv_18_arr;
- }
-
- public void sync_routing_table(byte[] their_node_id, Init init) {
- bindings.RoutingMessageHandler_sync_routing_table(this.ptr, their_node_id, init == null ? 0 : init.ptr & ~1);
- this.ptrs_to.add(init);
+ /**
+ * Called when a connection is established with a peer. This can be used to
+ * perform routing table synchronization using a strategy defined by the
+ * implementor.
+ *
+ * May return an `Err(())` if the features the peer supports are not sufficient to communicate
+ * with us. Implementors should be somewhat conservative about doing so, however, as other
+ * message handlers may still wish to communicate with this peer.
+ */
+ public Result_NoneNoneZ peer_connected(byte[] their_node_id, Init init) {
+ long ret = bindings.RoutingMessageHandler_peer_connected(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), init == null ? 0 : init.ptr);
+ Reference.reachabilityFence(this);
+ Reference.reachabilityFence(their_node_id);
+ Reference.reachabilityFence(init);
+ if (ret >= 0 && ret <= 4096) { return null; }
+ Result_NoneNoneZ ret_hu_conv = Result_NoneNoneZ.constr_from_ptr(ret);
+ if (this != null) { this.ptrs_to.add(init); };
+ return ret_hu_conv;