/*
* call-seq:
* zmq.close() -> nil
*
* Terminates the 0MQ context. If there are no longer any sockets open within
* context at the time zmq_term() is called then context shall be shut down and
* all associated resources shall be released immediately.
*
* Otherwise, the following applies:
* - The close() function shall return immediately.
* - Any blocking operations currently in progress on sockets open within
* context shall return immediately with an error code of ETERM.
* - With the exception of ZMQ::Socket#close(), any further operations on
* sockets open within context shall fail with an error code of ETERM.
* - The actual shutdown of context, and release of any associated resources, shall
* be delayed until the last socket within it is closed with ZMQ::Socket#close().
*/
static VALUE context_close (VALUE self_)
{
void * ctx = NULL;
Data_Get_Struct (self_, void, ctx);
if (ctx != NULL) {
int rc = zmq_term (ctx);
assert (rc == 0);
DATA_PTR (self_) = NULL;
}
return Qnil;
}