setsockopt cleanup in pyzmq.cpp

This commit is contained in:
malosek 2009-09-16 14:25:49 +02:00
parent 7a5db6041f
commit 17800ac85e

View File

@ -140,14 +140,29 @@ PyObject *socket_setsockopt (socket_t *self, PyObject *args, PyObject *kwdict)
}
int rc;
if (PyInt_Check (optval)) {
int val = PyInt_AsLong (optval);
rc = zmq_setsockopt (self->handle, option, &val, sizeof (int));
}
if (PyString_Check (optval))
rc = zmq_setsockopt (self->handle, option, PyString_AsString (optval),
PyString_Size (optval));
else {
switch (option) {
case ZMQ_HWM:
case ZMQ_LWM:
case ZMQ_SWAP:
case ZMQ_AFFINITY:
case ZMQ_RATE:
case ZMQ_RECOVERY_IVL:
case ZMQ_MCAST_LOOP:
{
int val = PyInt_AsLong (optval);
rc = zmq_setsockopt (self->handle, option, &val, sizeof (int));
break;
}
case ZMQ_IDENTITY:
case ZMQ_SUBSCRIBE:
case ZMQ_UNSUBSCRIBE:
rc = zmq_setsockopt (self->handle, option, PyString_AsString (optval),
PyString_Size (optval));
break;
default:
rc = -1;
errno = EINVAL;
}