You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.3 KiB
51 lines
1.3 KiB
8 years ago
|
#ifndef LIGHTNING_DAEMON_FEECHANGE_H
|
||
|
#define LIGHTNING_DAEMON_FEECHANGE_H
|
||
|
#include "config.h"
|
||
|
#include "feechange_state.h"
|
||
|
#include "htlc.h"
|
||
|
|
||
|
struct feechange {
|
||
|
/* What's the status */
|
||
|
enum feechange_state state;
|
||
|
/* The rate. */
|
||
|
u64 fee_rate;
|
||
|
};
|
||
|
|
||
|
static inline enum htlc_side feechange_side(enum feechange_state state)
|
||
|
{
|
||
|
if (state <= SENT_FEECHANGE_ACK_REVOCATION) {
|
||
|
return LOCAL;
|
||
|
} else {
|
||
|
assert(state < FEECHANGE_STATE_INVALID);
|
||
|
return REMOTE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
bool feechange_changestate(struct peer *peer,
|
||
|
struct feechange *feechange,
|
||
|
enum feechange_state oldstate,
|
||
|
enum feechange_state newstate,
|
||
|
bool db_commit);
|
||
|
|
||
|
struct feechange *new_feechange(struct peer *peer,
|
||
|
u64 fee_rate,
|
||
|
enum feechange_state state);
|
||
|
|
||
|
const char *feechange_state_name(enum feechange_state s);
|
||
|
enum feechange_state feechange_state_from_name(const char *name);
|
||
|
|
||
|
/* HTLC-add-style bitflags for each feechange state */
|
||
|
int feechange_state_flags(enum feechange_state state);
|
||
|
|
||
|
static inline bool feechange_has(const struct feechange *f, int flag)
|
||
|
{
|
||
|
return feechange_state_flags(f->state) & flag;
|
||
|
}
|
||
|
|
||
|
static inline bool feechange_is_dead(const struct feechange *feechange)
|
||
|
{
|
||
|
return feechange->state == SENT_FEECHANGE_ACK_REVOCATION
|
||
|
|| feechange->state == RCVD_FEECHANGE_ACK_REVOCATION;
|
||
|
}
|
||
|
#endif /* LIGHTNING_DAEMON_FEECHANGE_H */
|