05c9671a4fcf89ab1f7f1082ef2b14029ed652d1
[ldk-java] / c_sharp / src / org / ldk / structs / MessageHandler.cs
1 using org.ldk.impl;
2 using org.ldk.enums;
3 using org.ldk.util;
4 using System;
5
6 namespace org { namespace ldk { namespace structs {
7
8
9 /**
10  * Provides references to trait impls which handle different types of messages.
11  */
12 public class MessageHandler : CommonBase {
13         internal MessageHandler(object _dummy, long ptr) : base(ptr) { }
14         ~MessageHandler() {
15                 if (ptr != 0) { bindings.MessageHandler_free(ptr); }
16         }
17
18         /**
19          * A message handler which handles messages specific to channels. Usually this is just a
20          * [`ChannelManager`] object or an [`ErroringMessageHandler`].
21          * 
22          * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
23          */
24         public ChannelMessageHandler get_chan_handler() {
25                 long ret = bindings.MessageHandler_get_chan_handler(this.ptr);
26                 GC.KeepAlive(this);
27                 if (ret >= 0 && ret <= 4096) { return null; }
28                 ChannelMessageHandler ret_hu_conv = new ChannelMessageHandler(null, ret);
29                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(this); };
30                 return ret_hu_conv;
31         }
32
33         /**
34          * A message handler which handles messages specific to channels. Usually this is just a
35          * [`ChannelManager`] object or an [`ErroringMessageHandler`].
36          * 
37          * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
38          */
39         public void set_chan_handler(org.ldk.structs.ChannelMessageHandler val) {
40                 bindings.MessageHandler_set_chan_handler(this.ptr, val.ptr);
41                 GC.KeepAlive(this);
42                 GC.KeepAlive(val);
43                 if (this != null) { this.ptrs_to.AddLast(val); };
44         }
45
46         /**
47          * A message handler which handles messages updating our knowledge of the network channel
48          * graph. Usually this is just a [`P2PGossipSync`] object or an [`IgnoringMessageHandler`].
49          * 
50          * [`P2PGossipSync`]: crate::routing::gossip::P2PGossipSync
51          */
52         public RoutingMessageHandler get_route_handler() {
53                 long ret = bindings.MessageHandler_get_route_handler(this.ptr);
54                 GC.KeepAlive(this);
55                 if (ret >= 0 && ret <= 4096) { return null; }
56                 RoutingMessageHandler ret_hu_conv = new RoutingMessageHandler(null, ret);
57                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(this); };
58                 return ret_hu_conv;
59         }
60
61         /**
62          * A message handler which handles messages updating our knowledge of the network channel
63          * graph. Usually this is just a [`P2PGossipSync`] object or an [`IgnoringMessageHandler`].
64          * 
65          * [`P2PGossipSync`]: crate::routing::gossip::P2PGossipSync
66          */
67         public void set_route_handler(org.ldk.structs.RoutingMessageHandler val) {
68                 bindings.MessageHandler_set_route_handler(this.ptr, val.ptr);
69                 GC.KeepAlive(this);
70                 GC.KeepAlive(val);
71                 if (this != null) { this.ptrs_to.AddLast(val); };
72         }
73
74         /**
75          * A message handler which handles onion messages. This should generally be an
76          * [`OnionMessenger`], but can also be an [`IgnoringMessageHandler`].
77          * 
78          * [`OnionMessenger`]: crate::onion_message::OnionMessenger
79          */
80         public OnionMessageHandler get_onion_message_handler() {
81                 long ret = bindings.MessageHandler_get_onion_message_handler(this.ptr);
82                 GC.KeepAlive(this);
83                 if (ret >= 0 && ret <= 4096) { return null; }
84                 OnionMessageHandler ret_hu_conv = new OnionMessageHandler(null, ret);
85                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(this); };
86                 return ret_hu_conv;
87         }
88
89         /**
90          * A message handler which handles onion messages. This should generally be an
91          * [`OnionMessenger`], but can also be an [`IgnoringMessageHandler`].
92          * 
93          * [`OnionMessenger`]: crate::onion_message::OnionMessenger
94          */
95         public void set_onion_message_handler(org.ldk.structs.OnionMessageHandler val) {
96                 bindings.MessageHandler_set_onion_message_handler(this.ptr, val.ptr);
97                 GC.KeepAlive(this);
98                 GC.KeepAlive(val);
99                 if (this != null) { this.ptrs_to.AddLast(val); };
100         }
101
102         /**
103          * A message handler which handles custom messages. The only LDK-provided implementation is
104          * [`IgnoringMessageHandler`].
105          */
106         public CustomMessageHandler get_custom_message_handler() {
107                 long ret = bindings.MessageHandler_get_custom_message_handler(this.ptr);
108                 GC.KeepAlive(this);
109                 if (ret >= 0 && ret <= 4096) { return null; }
110                 CustomMessageHandler ret_hu_conv = new CustomMessageHandler(null, ret);
111                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(this); };
112                 return ret_hu_conv;
113         }
114
115         /**
116          * A message handler which handles custom messages. The only LDK-provided implementation is
117          * [`IgnoringMessageHandler`].
118          */
119         public void set_custom_message_handler(org.ldk.structs.CustomMessageHandler val) {
120                 bindings.MessageHandler_set_custom_message_handler(this.ptr, val.ptr);
121                 GC.KeepAlive(this);
122                 GC.KeepAlive(val);
123                 if (this != null) { this.ptrs_to.AddLast(val); };
124         }
125
126         /**
127          * Constructs a new MessageHandler given each field
128          */
129         public static MessageHandler of(org.ldk.structs.ChannelMessageHandler chan_handler_arg, org.ldk.structs.RoutingMessageHandler route_handler_arg, org.ldk.structs.OnionMessageHandler onion_message_handler_arg, org.ldk.structs.CustomMessageHandler custom_message_handler_arg) {
130                 long ret = bindings.MessageHandler_new(chan_handler_arg.ptr, route_handler_arg.ptr, onion_message_handler_arg.ptr, custom_message_handler_arg.ptr);
131                 GC.KeepAlive(chan_handler_arg);
132                 GC.KeepAlive(route_handler_arg);
133                 GC.KeepAlive(onion_message_handler_arg);
134                 GC.KeepAlive(custom_message_handler_arg);
135                 if (ret >= 0 && ret <= 4096) { return null; }
136                 org.ldk.structs.MessageHandler ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new org.ldk.structs.MessageHandler(null, ret); }
137                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(ret_hu_conv); };
138                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(chan_handler_arg); };
139                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(route_handler_arg); };
140                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(onion_message_handler_arg); };
141                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(custom_message_handler_arg); };
142                 return ret_hu_conv;
143         }
144
145 }
146 } } }