5
#include <sys/socket.h>
6
#include <netinet/in.h>
8
#include "erl_interface.h"
13
int main(int argc, char **argv) {
14
int fd; /* fd to Erlang node */
16
int loop = 1; /* Loop flag */
17
int got; /* Result of receive */
18
unsigned char buf[BUFSIZE]; /* Buffer for incoming message */
19
ErlMessage emsg; /* Incoming message */
21
ETERM *fromp, *tuplep, *fnp, *argp, *resp;
26
if (erl_connect_init(1, "secretcookie", 0) == -1)
27
erl_err_quit("erl_connect_init");
29
if ((fd = erl_connect("e1@idril")) < 0)
30
erl_err_quit("erl_connect");
31
fprintf(stderr, "Connected to ei@idril\n\r");
35
got = erl_receive_msg(fd, buf, BUFSIZE, &emsg);
36
if (got == ERL_TICK) {
38
} else if (got == ERL_ERROR) {
42
if (emsg.type == ERL_REG_SEND) {
43
fromp = erl_element(2, emsg.msg);
44
tuplep = erl_element(3, emsg.msg);
45
fnp = erl_element(1, tuplep);
46
argp = erl_element(2, tuplep);
48
if (strncmp(ERL_ATOM_PTR(fnp), "foo", 3) == 0) {
49
res = foo(ERL_INT_VALUE(argp));
50
} else if (strncmp(ERL_ATOM_PTR(fnp), "bar", 3) == 0) {
51
res = bar(ERL_INT_VALUE(argp));
54
resp = erl_format("{cnode, ~i}", res);
55
erl_send(fd, fromp, resp);
57
erl_free_term(emsg.from); erl_free_term(emsg.msg);
58
erl_free_term(fromp); erl_free_term(tuplep);
59
erl_free_term(fnp); erl_free_term(argp);