// AMQP // ==== #include "amqp_common.h" Term amqp_channel_run(Env e, Term* f, IoWork* w) { LapineConnection* lap = (LapineConnection*)(intptr_t)f[0]; if (lap == NULL || lap->conn == NULL) { return io_fail(e, EINVAL, "lapine: invalid connection"); } amqp_channel_t id = 1; amqp_rpc_reply_t reply = amqp_channel_open(lap->conn, id); u32 err = lapine_rpc_error(reply); if (err != 0) { return io_fail(e, err, "lapine: channel open failed"); } LapineChannel* chan = lapine_chan_new(lap->conn, id); return io_tup(e, f[0], io_done(e, (Term)(intptr_t)chan)); } static void __attribute__((constructor)) amqp_channel_use(void) { io_eff(CID_AMQP_CHANNEL, amqp_channel_run, 0); }