848e29b996ba0fc8ee3509c3eaaf3e3184e760d7
[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 == null ? 0 : 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 == null ? 0 : 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. For now, this can only be an
76          * [`IgnoringMessageHandler`].
77          */
78         public OnionMessageHandler get_onion_message_handler() {
79                 long ret = bindings.MessageHandler_get_onion_message_handler(this.ptr);
80                 GC.KeepAlive(this);
81                 if (ret >= 0 && ret <= 4096) { return null; }
82                 OnionMessageHandler ret_hu_conv = new OnionMessageHandler(null, ret);
83                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(this); };
84                 return ret_hu_conv;
85         }
86
87         /**
88          * A message handler which handles onion messages. For now, this can only be an
89          * [`IgnoringMessageHandler`].
90          */
91         public void set_onion_message_handler(org.ldk.structs.OnionMessageHandler val) {
92                 bindings.MessageHandler_set_onion_message_handler(this.ptr, val == null ? 0 : val.ptr);
93                 GC.KeepAlive(this);
94                 GC.KeepAlive(val);
95                 if (this != null) { this.ptrs_to.AddLast(val); };
96         }
97
98         /**
99          * Constructs a new MessageHandler given each field
100          */
101         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) {
102                 long ret = bindings.MessageHandler_new(chan_handler_arg == null ? 0 : chan_handler_arg.ptr, route_handler_arg == null ? 0 : route_handler_arg.ptr, onion_message_handler_arg == null ? 0 : onion_message_handler_arg.ptr);
103                 GC.KeepAlive(chan_handler_arg);
104                 GC.KeepAlive(route_handler_arg);
105                 GC.KeepAlive(onion_message_handler_arg);
106                 if (ret >= 0 && ret <= 4096) { return null; }
107                 org.ldk.structs.MessageHandler ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new org.ldk.structs.MessageHandler(null, ret); }
108                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(ret_hu_conv); };
109                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(chan_handler_arg); };
110                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(route_handler_arg); };
111                 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(onion_message_handler_arg); };
112                 return ret_hu_conv;
113         }
114
115 }
116 } } }