/
constants.pyx
231 lines (206 loc) · 5.49 KB
/
constants.pyx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
"""0MQ Constants."""
#
# Copyright (c) 2010-2011 Brian E. Granger & Min Ragan-Kelley
#
# This file is part of pyzmq.
#
# pyzmq is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# pyzmq is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
from libzmq cimport *
#-----------------------------------------------------------------------------
# Python module level constants
#-----------------------------------------------------------------------------
_optionals = []
if ZMQ_VERSION < 30000:
NOBLOCK = ZMQ_NOBLOCK
else:
# keep NOBLOCK as alias for new DONTWAIT
NOBLOCK = ZMQ_DONTWAIT
DONTWAIT = ZMQ_DONTWAIT
_optionals.extend(['DONTWAIT'])
# socket types
PAIR = ZMQ_PAIR
PUB = ZMQ_PUB
SUB = ZMQ_SUB
REQ = ZMQ_REQ
REP = ZMQ_REP
XREQ = ZMQ_XREQ
XREP = ZMQ_XREP
PULL = ZMQ_PULL
PUSH = ZMQ_PUSH
if ZMQ_DEALER == -1:
DEALER = XREQ
else:
DEALER = ZMQ_DEALER
if ZMQ_ROUTER == -1:
ROUTER = XREP
else:
ROUTER = ZMQ_ROUTER
if ZMQ_VERSION < 30000:
UPSTREAM = ZMQ_UPSTREAM
DOWNSTREAM = ZMQ_DOWNSTREAM
_optionals.extend(['UPSTREAM','DOWNSTREAM'])
# new in 2.1.1
if ZMQ_VERSION >= 20101:
XPUB = ZMQ_XPUB
XSUB = ZMQ_XSUB
_optionals.extend(['XPUB','XSUB'])
# socket options
AFFINITY = ZMQ_AFFINITY
IDENTITY = ZMQ_IDENTITY
SUBSCRIBE = ZMQ_SUBSCRIBE
UNSUBSCRIBE = ZMQ_UNSUBSCRIBE
RATE = ZMQ_RATE
RECOVERY_IVL = ZMQ_RECOVERY_IVL
SNDBUF = ZMQ_SNDBUF
RCVBUF = ZMQ_RCVBUF
RCVMORE = ZMQ_RCVMORE
SNDMORE = ZMQ_SNDMORE
POLLIN = ZMQ_POLLIN
POLLOUT = ZMQ_POLLOUT
POLLERR = ZMQ_POLLERR
STREAMER = ZMQ_STREAMER
FORWARDER = ZMQ_FORWARDER
QUEUE = ZMQ_QUEUE
# collections of sockopts, based on type:
bytes_sockopts = [SUBSCRIBE, UNSUBSCRIBE, IDENTITY]
int64_sockopts = [AFFINITY]
int_sockopts = []
# some sockopts changed type from 2.x to 3.0
switched = [RATE, RECOVERY_IVL, SNDBUF, RCVBUF, RCVMORE]
if ZMQ_VERSION < 30000:
int64_sockopts.extend(switched)
else:
int_sockopts.extend(switched)
if ZMQ_VERSION < 30000:
HWM = ZMQ_HWM
SWAP = ZMQ_SWAP
MCAST_LOOP = ZMQ_MCAST_LOOP
_optionals.extend(['HWM', 'SWAP', 'MCAST_LOOP'])
int64_sockopts.extend([HWM, SWAP, MCAST_LOOP])
else:
SNDHWM = ZMQ_SNDHWM
RCVHWM = ZMQ_RCVHWM
MAXMSGSIZE = ZMQ_MAXMSGSIZE
_optionals.extend(['SNDHWM', 'RCVHWM', 'MAXMSGSIZE'])
int_sockopts.extend([SNDHWM, RCVHWM])
FD = ZMQ_FD
EVENTS = ZMQ_EVENTS
TYPE = ZMQ_TYPE
LINGER = ZMQ_LINGER
RECONNECT_IVL = ZMQ_RECONNECT_IVL
BACKLOG = ZMQ_BACKLOG
int_sockopts.extend([EVENTS, TYPE, LINGER, RECONNECT_IVL, BACKLOG])
# new in 2.1.1:
if ZMQ_VERSION >= 20101:
if ZMQ_VERSION < 30000:
RECOVERY_IVL_MSEC = ZMQ_RECOVERY_IVL_MSEC
int64_sockopts.append(RECOVERY_IVL_MSEC)
_optionals.append('RECOVERY_IVL_MSEC')
RECONNECT_IVL_MAX = ZMQ_RECONNECT_IVL_MAX
int_sockopts.append(RECONNECT_IVL_MAX)
_optionals.append('RECONNECT_IVL_MAX')
# As new constants are added in future versions, add a new block here
# like the two above, checking agains the relevant value for ZMQ_VERSION.
# The constants will need to be added to libzmq.pxd and utils/zmq_compat.h
# as well.
#-----------------------------------------------------------------------------
# Error handling
#-----------------------------------------------------------------------------
# Often used (these are alse in errno.)
EAGAIN = ZMQ_EAGAIN
EINVAL = ZMQ_EINVAL
EFAULT = ZMQ_EFAULT
ENOMEM = ZMQ_ENOMEM
ENODEV = ZMQ_ENODEV
# For Windows compatability
ENOTSUP = ZMQ_ENOTSUP
EPROTONOSUPPORT = ZMQ_EPROTONOSUPPORT
ENOBUFS = ZMQ_ENOBUFS
ENETDOWN = ZMQ_ENETDOWN
EADDRINUSE = ZMQ_EADDRINUSE
EADDRNOTAVAIL = ZMQ_EADDRNOTAVAIL
ECONNREFUSED = ZMQ_ECONNREFUSED
EINPROGRESS = ZMQ_EINPROGRESS
# 0MQ Native
EMTHREAD = ZMQ_EMTHREAD
EFSM = ZMQ_EFSM
ENOCOMPATPROTO = ZMQ_ENOCOMPATPROTO
ETERM = ZMQ_ETERM
#-----------------------------------------------------------------------------
# Symbols to export
#-----------------------------------------------------------------------------
__all__ = [
'NOBLOCK',
'FD',
'EVENTS',
'TYPE',
'LINGER',
'RECONNECT_IVL',
'BACKLOG',
'PAIR',
'PUB',
'SUB',
'REQ',
'REP',
'XREQ',
'DEALER',
'XREP',
'ROUTER',
'PULL',
'PUSH',
'AFFINITY',
'IDENTITY',
'SUBSCRIBE',
'UNSUBSCRIBE',
'RATE',
'RECOVERY_IVL',
'SNDBUF',
'RCVBUF',
'SNDMORE',
'RCVMORE',
'POLLIN',
'POLLOUT',
'POLLERR',
'STREAMER',
'FORWARDER',
'QUEUE',
# ERRORNO codes
'EAGAIN',
'EINVAL',
'ENOTSUP',
'EPROTONOSUPPORT',
'ENOBUFS',
'ENETDOWN',
'EADDRINUSE',
'EADDRNOTAVAIL',
'ECONNREFUSED',
'EINPROGRESS',
'EMTHREAD',
'EFSM',
'ENOCOMPATPROTO',
'ETERM',
'EFAULT',
'ENOMEM',
'ENODEV',
# collections
'bytes_sockopts',
'int_sockopts',
'int64_sockopts'
]
__all__.extend(_optionals)
del _optionals