diff options
author | imarom <imarom@cisco.com> | 2016-03-20 11:49:17 +0200 |
---|---|---|
committer | imarom <imarom@cisco.com> | 2016-03-20 11:50:17 +0200 |
commit | 94ec2f0c0a6fc30fb3a9a11243146e0d878c4c5b (patch) | |
tree | a63d4b1e4b22938a3506a55030a3866e0d5211ca /scripts/external_libs/pyzmq-14.5.0/cel59/python3/32bit/zmq/backend/cffi/context.py | |
parent | 33c80d0f2c3af8b302e50ce3925869dfd37267ed (diff) |
ZMQ CEL5.9 / 32 bit / 64 bit with python 2 / python 3
Diffstat (limited to 'scripts/external_libs/pyzmq-14.5.0/cel59/python3/32bit/zmq/backend/cffi/context.py')
-rw-r--r-- | scripts/external_libs/pyzmq-14.5.0/cel59/python3/32bit/zmq/backend/cffi/context.py | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/scripts/external_libs/pyzmq-14.5.0/cel59/python3/32bit/zmq/backend/cffi/context.py b/scripts/external_libs/pyzmq-14.5.0/cel59/python3/32bit/zmq/backend/cffi/context.py new file mode 100644 index 00000000..16a7b257 --- /dev/null +++ b/scripts/external_libs/pyzmq-14.5.0/cel59/python3/32bit/zmq/backend/cffi/context.py @@ -0,0 +1,100 @@ +# coding: utf-8 +"""zmq Context class""" + +# Copyright (C) PyZMQ Developers +# Distributed under the terms of the Modified BSD License. + +import weakref + +from ._cffi import C, ffi + +from .socket import * +from .constants import * + +from zmq.error import ZMQError, _check_rc + +class Context(object): + _zmq_ctx = None + _iothreads = None + _closed = None + _sockets = None + _shadow = False + + def __init__(self, io_threads=1, shadow=None): + + if shadow: + self._zmq_ctx = ffi.cast("void *", shadow) + self._shadow = True + else: + self._shadow = False + if not io_threads >= 0: + raise ZMQError(EINVAL) + + self._zmq_ctx = C.zmq_ctx_new() + if self._zmq_ctx == ffi.NULL: + raise ZMQError(C.zmq_errno()) + if not shadow: + C.zmq_ctx_set(self._zmq_ctx, IO_THREADS, io_threads) + self._closed = False + self._sockets = set() + + @property + def underlying(self): + """The address of the underlying libzmq context""" + return int(ffi.cast('size_t', self._zmq_ctx)) + + @property + def closed(self): + return self._closed + + def _add_socket(self, socket): + ref = weakref.ref(socket) + self._sockets.add(ref) + return ref + + def _rm_socket(self, ref): + if ref in self._sockets: + self._sockets.remove(ref) + + def set(self, option, value): + """set a context option + + see zmq_ctx_set + """ + rc = C.zmq_ctx_set(self._zmq_ctx, option, value) + _check_rc(rc) + + def get(self, option): + """get context option + + see zmq_ctx_get + """ + rc = C.zmq_ctx_get(self._zmq_ctx, option) + _check_rc(rc) + return rc + + def term(self): + if self.closed: + return + + C.zmq_ctx_destroy(self._zmq_ctx) + + self._zmq_ctx = None + self._closed = True + + def destroy(self, linger=None): + if self.closed: + return + + sockets = self._sockets + self._sockets = set() + for s in sockets: + s = s() + if s and not s.closed: + if linger: + s.setsockopt(LINGER, linger) + s.close() + + self.term() + +__all__ = ['Context'] |