36 lines
857 B
C
36 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;
|
|
}
|