Files
emacs-conf/lisp/zmq/src/context.c

64 lines
1.7 KiB
C

#include "context.h"
EZMQ_DOC(ezmq_context, "", "Create a new context.");
emacs_value
ezmq_context(void)
{
void *ctx = zmq_ctx_new();
EZMQ_CHECK_NULL_ERROR(ctx);
ezmq_debug("ezmq_context()\n");
return ezmq_new_obj_ptr(ezmq_new_obj(EZMQ_CONTEXT, ctx));
}
EZMQ_DOC(ezmq_ctx_set, "CONTEXT OPTION VALUE", "Set a CONTEXT OPTION to VALUE.");
emacs_value
ezmq_ctx_set(emacs_value econtext, emacs_value eoption, emacs_value evalue)
{
EZMQ_EXTRACT_OBJ(context, EZMQ_CONTEXT, econtext);
EZMQ_EXTRACT_INT(option, eoption);
if(option == ZMQ_BLOCKY || option == ZMQ_IPV6)
EZMQ_CHECK_ERROR(zmq_ctx_set(context->obj, option, (int)!NILP(evalue)));
else {
EZMQ_EXTRACT_INT(value, evalue);
EZMQ_CHECK_ERROR(zmq_ctx_set(context->obj, option, value));
}
return Qnil;
}
EZMQ_DOC(ezmq_ctx_get, "CONTEXT OPTION", "Get a CONTEXT OPTION.");
emacs_value
ezmq_ctx_get(emacs_value econtext, emacs_value eoption)
{
emacs_value retval = Qnil;
EZMQ_EXTRACT_OBJ(context, EZMQ_CONTEXT, econtext);
EZMQ_EXTRACT_INT(option, eoption);
int val = zmq_ctx_get(context->obj, option);
EZMQ_CHECK_ERROR(val);
if(option == ZMQ_BLOCKY || option == ZMQ_IPV6) {
if(val) retval = Qt;
}
else
retval = INT(val);
return retval;
}
EZMQ_DOC(ezmq_ctx_shutdown, "CONTEXT", "Shutdown CONTEXT.");
emacs_value
ezmq_ctx_shutdown(emacs_value econtext)
{
EZMQ_EXTRACT_OBJ(context, EZMQ_CONTEXT, econtext);
EZMQ_CHECK_ERROR(zmq_ctx_shutdown(context->obj));
return Qnil;
}
EZMQ_DOC(ezmq_ctx_term, "CONTEXT", "Terminate CONTEXT.");
emacs_value
ezmq_ctx_term(emacs_value econtext)
{
EZMQ_EXTRACT_OBJ(context, EZMQ_CONTEXT, econtext);
EZMQ_CHECK_ERROR(zmq_ctx_term(context->obj));
return Qnil;
}