commando.html5/node_modules/lnsocket/commando.c

37 lines
857 B
C

#include "lnsocket.h"
#include "cursor.h"
#include "endian.h"
#include "commando.h"
#include "export.h"
int EXPORT commando_make_rpc_msg(const char *method, const char *params,
const char *rune, unsigned int req_id, unsigned char *buf, int buflen)
{
struct cursor msgbuf;
int ok;
make_cursor(buf, buf+buflen, &msgbuf);
params = (params == NULL || params[0] == '\0') ? "[]" : params;
if (!cursor_push_u16(&msgbuf, COMMANDO_CMD))
return 0;
if (!cursor_push_u64(&msgbuf, (u64)req_id))
return 0;
ok = cursor_push_str(&msgbuf, "{\"method\":\"") &&
cursor_push_str(&msgbuf, method) &&
cursor_push_str(&msgbuf, "\",\"params\":") &&
cursor_push_str(&msgbuf, params) &&
cursor_push_str(&msgbuf, ",\"rune\":\"") &&
cursor_push_str(&msgbuf, rune) &&
cursor_push_str(&msgbuf, "\"}");
if (!ok)
return 0;
return msgbuf.p - msgbuf.start;
}