2017-12-25 01:05:27 -05:00
|
|
|
use ln::msgs;
|
2018-06-27 09:11:58 -04:00
|
|
|
use chain::transaction::OutPoint;
|
2017-12-25 01:05:27 -05:00
|
|
|
|
|
|
|
use bitcoin::blockdata::script::Script;
|
|
|
|
|
|
|
|
use secp256k1::key::PublicKey;
|
|
|
|
|
|
|
|
use std::time::Instant;
|
|
|
|
|
|
|
|
pub enum Event {
|
|
|
|
// Events a user will probably have to handle
|
|
|
|
/// Used to indicate that the client should generate a funding transaction with the given
|
|
|
|
/// parameters and then call ChannelManager::funding_transaction_generated.
|
|
|
|
/// Generated in ChannelManager message handling.
|
|
|
|
FundingGenerationReady {
|
2018-07-22 18:19:28 -04:00
|
|
|
temporary_channel_id: [u8; 32],
|
2017-12-25 01:05:27 -05:00
|
|
|
channel_value_satoshis: u64,
|
|
|
|
output_script: Script,
|
|
|
|
/// The value passed in to ChannelManager::create_channel
|
|
|
|
user_channel_id: u64,
|
|
|
|
},
|
|
|
|
/// Used to indicate that the client may now broadcast the funding transaction it created for a
|
|
|
|
/// channel. Broadcasting such a transaction prior to this event may lead to our counterparty
|
|
|
|
/// trivially stealing all funds in the funding transaction!
|
|
|
|
FundingBroadcastSafe {
|
2018-06-27 09:11:58 -04:00
|
|
|
funding_txo: OutPoint,
|
2017-12-25 01:05:27 -05:00
|
|
|
/// The value passed in to ChannelManager::create_channel
|
|
|
|
user_channel_id: u64,
|
|
|
|
},
|
|
|
|
/// Indicates we've received money! Just gotta dig out that payment preimage and feed it to
|
|
|
|
/// ChannelManager::claim_funds to get it....
|
2018-03-20 19:11:27 -04:00
|
|
|
/// Note that if the preimage is not known, you must call ChannelManager::fail_htlc_backwards
|
|
|
|
/// to free up resources for this HTLC.
|
2017-12-25 01:05:27 -05:00
|
|
|
PaymentReceived {
|
|
|
|
payment_hash: [u8; 32],
|
|
|
|
amt: u64,
|
|
|
|
},
|
2018-03-20 19:11:27 -04:00
|
|
|
/// Indicates an outbound payment we made succeeded (ie it made it all the way to its target
|
|
|
|
/// and we got back the payment preimage for it). payment_preimage serves as a payment receipt,
|
|
|
|
/// if you wish to have such a thing, you must store it somehow!
|
|
|
|
PaymentSent {
|
|
|
|
payment_preimage: [u8; 32],
|
|
|
|
},
|
|
|
|
/// Indicates an outbound payment we made failed. Probably some intermediary node dropped
|
|
|
|
/// something. You may wish to retry with a different route.
|
|
|
|
PaymentFailed {
|
|
|
|
payment_hash: [u8; 32],
|
|
|
|
},
|
2017-12-25 01:05:27 -05:00
|
|
|
|
|
|
|
// Events indicating the network loop should send a message to a peer:
|
|
|
|
/// Used to indicate that ChannelManager::process_pending_htlc_forwards should be called at a
|
|
|
|
/// time in the future.
|
|
|
|
PendingHTLCsForwardable {
|
|
|
|
time_forwardable: Instant,
|
|
|
|
},
|
2018-07-06 17:29:34 -04:00
|
|
|
/// Used to indicate that we've initialted a channel open and should send the open_channel
|
|
|
|
/// message provided to the given peer
|
|
|
|
SendOpenChannel {
|
|
|
|
node_id: PublicKey,
|
|
|
|
msg: msgs::OpenChannel,
|
|
|
|
},
|
2017-12-25 01:05:27 -05:00
|
|
|
/// Used to indicate that a funding_created message should be sent to the peer with the given node_id.
|
|
|
|
SendFundingCreated {
|
|
|
|
node_id: PublicKey,
|
|
|
|
msg: msgs::FundingCreated,
|
|
|
|
},
|
|
|
|
/// Used to indicate that a funding_locked message should be sent to the peer with the given node_id.
|
|
|
|
SendFundingLocked {
|
|
|
|
node_id: PublicKey,
|
|
|
|
msg: msgs::FundingLocked,
|
|
|
|
announcement_sigs: Option<msgs::AnnouncementSignatures>,
|
|
|
|
},
|
|
|
|
/// Used to indicate that a series of update_add_htlc messages, as well as a commitment_signed
|
|
|
|
/// message should be sent to the peer with the given node_id.
|
|
|
|
SendHTLCs {
|
|
|
|
node_id: PublicKey,
|
|
|
|
msgs: Vec<msgs::UpdateAddHTLC>,
|
|
|
|
commitment_msg: msgs::CommitmentSigned,
|
|
|
|
},
|
|
|
|
/// Used to indicate that we're ready to fulfill an htlc from the peer with the given node_id.
|
|
|
|
SendFulfillHTLC {
|
|
|
|
node_id: PublicKey,
|
|
|
|
msg: msgs::UpdateFulfillHTLC,
|
2018-04-04 11:56:54 -04:00
|
|
|
commitment_msg: msgs::CommitmentSigned,
|
2017-12-25 01:05:27 -05:00
|
|
|
},
|
2018-03-20 19:11:27 -04:00
|
|
|
/// Used to indicate that we need to fail an htlc from the peer with the given node_id.
|
|
|
|
SendFailHTLC {
|
|
|
|
node_id: PublicKey,
|
|
|
|
msg: msgs::UpdateFailHTLC,
|
2018-04-04 11:56:54 -04:00
|
|
|
commitment_msg: msgs::CommitmentSigned,
|
2018-03-20 19:11:27 -04:00
|
|
|
},
|
2018-07-22 23:03:31 -04:00
|
|
|
/// Used to indicate that a shutdown message should be sent to the peer with the given node_id.
|
|
|
|
SendShutdown {
|
|
|
|
node_id: PublicKey,
|
|
|
|
msg: msgs::Shutdown,
|
|
|
|
},
|
2017-12-25 01:05:27 -05:00
|
|
|
/// Used to indicate that a channel_announcement and channel_update should be broadcast to all
|
|
|
|
/// peers (except the peer with node_id either msg.contents.node_id_1 or msg.contents.node_id_2).
|
|
|
|
BroadcastChannelAnnouncement {
|
|
|
|
msg: msgs::ChannelAnnouncement,
|
|
|
|
update_msg: msgs::ChannelUpdate,
|
|
|
|
},
|
2018-04-24 20:40:22 -04:00
|
|
|
/// Used to indicate that a channel_update should be broadcast to all peers.
|
|
|
|
BroadcastChannelUpdate {
|
|
|
|
msg: msgs::ChannelUpdate,
|
|
|
|
},
|
2017-12-25 01:05:27 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
pub trait EventsProvider {
|
|
|
|
fn get_and_clear_pending_events(&self) -> Vec<Event>;
|
|
|
|
}
|