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.
63 lines
1.8 KiB
63 lines
1.8 KiB
#ifndef LIGHTNING_COMMON_STATUS_H
|
|
#define LIGHTNING_COMMON_STATUS_H
|
|
#include "config.h"
|
|
#include <ccan/compiler/compiler.h>
|
|
#include <ccan/short_types/short_types.h>
|
|
#include <stdarg.h>
|
|
#include <stdlib.h>
|
|
|
|
struct daemon_conn;
|
|
|
|
/* Simple status reporting API. */
|
|
void status_setup_sync(int fd);
|
|
void status_setup_async(struct daemon_conn *master);
|
|
|
|
/* Convenient context, frees up after every status_update/failed */
|
|
extern const void *trc;
|
|
|
|
/* Special status code for tracing messages. */
|
|
#define STATUS_TRACE 0x7FFF
|
|
|
|
/* Failure codes always have high bit set. */
|
|
#define STATUS_FAIL 0x8000
|
|
|
|
/* These are always followed by an ASCII string. */
|
|
enum status_fail {
|
|
/*
|
|
* These errors shouldn't happen:
|
|
*/
|
|
/* Master daemon sent unknown/malformed command, or fd failed */
|
|
STATUS_FAIL_MASTER_IO = STATUS_FAIL,
|
|
|
|
/* Hsmd sent unknown/malformed command, or fd failed */
|
|
STATUS_FAIL_HSM_IO,
|
|
|
|
/* Gossipd sent unknown/malformed command, or fd failed */
|
|
STATUS_FAIL_GOSSIP_IO,
|
|
|
|
/* Other internal error. */
|
|
STATUS_FAIL_INTERNAL_ERROR,
|
|
|
|
/*
|
|
* These errors happen when the other peer misbehaves:
|
|
*/
|
|
/* I/O failure (probably they closed the socket) */
|
|
STATUS_FAIL_PEER_IO,
|
|
/* Peer did something else wrong */
|
|
STATUS_FAIL_PEER_BAD
|
|
};
|
|
|
|
/* Send a message (frees the message). */
|
|
void status_send_sync(const u8 *msg);
|
|
/* Send a printf-style debugging trace. */
|
|
void status_trace(const char *fmt, ...) PRINTF_FMT(1,2);
|
|
/* vprintf-style */
|
|
void status_tracev(const char *fmt, va_list ap);
|
|
/* Send a failure status code with printf-style msg, and exit. */
|
|
void status_failed(enum status_fail code, const char *fmt, ...) PRINTF_FMT(2,3) NORETURN;
|
|
|
|
/* Helper for master failures: sends STATUS_FAIL_MASTER_IO.
|
|
* msg NULL == read failure. */
|
|
void master_badmsg(u32 type_expected, const u8 *msg);
|
|
|
|
#endif /* LIGHTNING_COMMON_STATUS_H */
|
|
|