forked from ElementsProject/lightning
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwatch.h
97 lines (81 loc) · 2.99 KB
/
watch.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#ifndef LIGHTNING_LIGHTNINGD_WATCH_H
#define LIGHTNING_LIGHTNINGD_WATCH_H
#include "config.h"
#include <bitcoin/tx.h>
#include <ccan/htable/htable_type.h>
struct block;
struct channel;
struct chain_topology;
struct lightningd;
struct txowatch;
struct txwatch;
enum watch_result {
DELETE_WATCH = -1,
KEEP_WATCHING = -2
};
const struct bitcoin_outpoint *txowatch_keyof(const struct txowatch *w);
size_t txo_hash(const struct bitcoin_outpoint *out);
bool txowatch_eq(const struct txowatch *w, const struct bitcoin_outpoint *out);
HTABLE_DEFINE_TYPE(struct txowatch, txowatch_keyof, txo_hash, txowatch_eq,
txowatch_hash);
const struct bitcoin_txid *txwatch_keyof(const struct txwatch *w);
size_t txid_hash(const struct bitcoin_txid *txid);
bool txwatch_eq(const struct txwatch *w, const struct bitcoin_txid *txid);
HTABLE_DEFINE_TYPE(struct txwatch, txwatch_keyof, txid_hash, txwatch_eq,
txwatch_hash);
struct txwatch *watch_txid_(const tal_t *ctx,
struct chain_topology *topo,
const struct bitcoin_txid *txid,
enum watch_result (*cb)(struct lightningd *ld,
const struct bitcoin_txid *,
const struct bitcoin_tx *,
unsigned int depth,
void *arg),
void *arg);
#define watch_txid(ctx, topo, txid, cb, arg) \
watch_txid_((ctx), (topo), (txid), \
typesafe_cb_preargs(enum watch_result, void *, \
(cb), (arg), \
struct lightningd *, \
const struct bitcoin_txid *, \
const struct bitcoin_tx *, \
unsigned int depth), \
(arg))
struct txowatch *watch_txo(const tal_t *ctx,
struct chain_topology *topo,
struct channel *channel,
const struct bitcoin_outpoint *outpoint,
enum watch_result (*cb)(struct channel *,
const struct bitcoin_tx *tx,
size_t input_num,
const struct block *block));
struct txwatch *find_txwatch_(struct chain_topology *topo,
const struct bitcoin_txid *txid,
enum watch_result (*cb)(struct lightningd *ld,
const struct bitcoin_txid *,
const struct bitcoin_tx *,
unsigned int depth,
void *arg),
void *arg);
#define find_txwatch(topo, txid, cb, arg) \
find_txwatch_((topo), (txid), \
typesafe_cb_preargs(enum watch_result, void *, \
(cb), (arg), \
struct lightningd *, \
const struct bitcoin_txid *, \
const struct bitcoin_tx *, \
unsigned int depth), \
(arg))
void txwatch_fire(struct chain_topology *topo,
const struct bitcoin_txid *txid,
unsigned int depth);
void txowatch_fire(const struct txowatch *txow,
const struct bitcoin_tx *tx, size_t input_num,
const struct block *block);
bool watching_txid(const struct chain_topology *topo,
const struct bitcoin_txid *txid);
void txwatch_inform(const struct chain_topology *topo,
const struct bitcoin_txid *txid,
struct bitcoin_tx *tx TAKES);
void watch_topology_changed(struct chain_topology *topo);
#endif /* LIGHTNING_LIGHTNINGD_WATCH_H */