Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
L
libzmq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
libzmq
Commits
77bc3790
Commit
77bc3790
authored
Aug 24, 2009
by
tamara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
python extension added
parent
6be4b014
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
837 additions
and
3 deletions
+837
-3
Makefile.am
Makefile.am
+2
-2
configure.in
configure.in
+58
-1
Makefile.am
python/Makefile.am
+7
-0
pyzmq.cpp
python/pyzmq.cpp
+756
-0
setup.py.in
python/setup.py.in
+14
-0
No files found.
Makefile.am
View file @
77bc3790
include_HEADERS
=
include/zmq.h include/zmq.hpp
include_HEADERS
=
include/zmq.h include/zmq.hpp
SUBDIRS
=
src examples
SUBDIRS
=
src examples
python
DIST_SUBDIRS
=
src examples
DIST_SUBDIRS
=
src examples
python
configure.in
View file @
77bc3790
...
@@ -159,6 +159,59 @@ if test "x$HAVE_INTTYPES_H" = "xyes"; then
...
@@ -159,6 +159,59 @@ if test "x$HAVE_INTTYPES_H" = "xyes"; then
inttypes="1"
inttypes="1"
fi
fi
# Python
pyzmq="no"
AC_ARG_WITH(python_headersdir,
AC_HELP_STRING([--with-python-headersdir], [Python.h header file location]),
[python_headersdir="$withval"], [python_headersdir="no"])
AC_ARG_WITH([python], [AS_HELP_STRING([--with-python], [build Python language binding [default=no]])], [with_python=yes], [with_python=no])
if test "x$with_python" != "xno"; then
AM_PATH_PYTHON([2.4], , [:])
if test "x$PYTHON" = "x:"; then
AC_MSG_ERROR([To run configure with --with-python option, Python has to be installed.]);
fi
if test "x$python_headersdir" != "xno"; then
PYTHON_INCLUDES="-I${python_headersdir}"
PYTHON_SETUP_INCLUDES="${python_headersdir}"
AC_CHECK_HEADERS($python_headersdir/Python.h, [] ,
[AC_MSG_ERROR([To run configure with --with-python option, Python.h has to be usable.])])
else
py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
PYTHON_SETUP_INCLUDES="${py_prefix}/include/python${PYTHON_VERSION}"
if test "$py_prefix" != "$py_exec_prefix"; then
PYTHON_INCLUDES="${PYTHON_INCLUDES} -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
fi
AC_CHECK_HEADERS($py_prefix/include/python${PYTHON_VERSION}/Python.h, [] ,
[AC_MSG_ERROR([To run configure with --with-python option, Python.h has to be usable.])])
fi
AC_SUBST(PYTHON_INCLUDES)
AC_SUBST(PYTHON_SETUP_INCLUDES)
pyzmq="yes"
fi
if test "x$pyzmq" != "xyes"; then
AC_CHECK_PROG(have_python, python, yes, no)
if test "x$have_python" != "xyes"; then
AC_MSG_ERROR([Could not find python.])
fi
fi
# Generate version.c
AC_CONFIG_COMMANDS([version.c],
[python third-party/openpgm/libpgm-1.0.0/openpgm/pgm/version_generator.py > \
third-party/openpgm/libpgm-1.0.0/openpgm/pgm/version.c])
AC_SUBST(stdint)
AC_SUBST(stdint)
AC_SUBST(inttypes)
AC_SUBST(inttypes)
...
@@ -171,7 +224,8 @@ AC_FUNC_MALLOC
...
@@ -171,7 +224,8 @@ AC_FUNC_MALLOC
AC_TYPE_SIGNAL
AC_TYPE_SIGNAL
AC_CHECK_FUNCS(perror gettimeofday memset socket getifaddrs freeifaddrs)
AC_CHECK_FUNCS(perror gettimeofday memset socket getifaddrs freeifaddrs)
AC_OUTPUT(Makefile src/Makefile examples/Makefile examples/chat/Makefile)
AC_OUTPUT(Makefile src/Makefile examples/Makefile examples/chat/Makefile python/Makefile \
python/setup.py)
AC_MSG_RESULT([])
AC_MSG_RESULT([])
AC_MSG_RESULT([ ******************************************************** ])
AC_MSG_RESULT([ ******************************************************** ])
...
@@ -184,5 +238,8 @@ AC_MSG_RESULT([ license text. ])
...
@@ -184,5 +238,8 @@ AC_MSG_RESULT([ license text. ])
AC_MSG_RESULT([ ******************************************************** ])
AC_MSG_RESULT([ ******************************************************** ])
AC_MSG_RESULT([])
AC_MSG_RESULT([])
AC_MSG_RESULT([ 0MQ install dir: $prefix])
AC_MSG_RESULT([ 0MQ install dir: $prefix])
AC_MSG_RESULT([ Python language binding: $pyzmq])
AC_MSG_RESULT([])
AC_MSG_RESULT([])
AM_CONDITIONAL(BUILD_PYTHON, test "x$pyzmq" = "xyes")
python/Makefile.am
0 → 100644
View file @
77bc3790
INCLUDES
=
-I
$(top_builddir)
-I
$(top_srcdir)
-I
$(top_srcdir)
/libzmq
\
-I
$(top_builddir)
/libzmq
$(PYTHON_INCLUDES)
pyexec_LTLIBRARIES
=
libpyzmq.la
libpyzmq_la_SOURCES
=
pyzmq.cpp
libpyzmq_la_LIBADD
=
$(top_builddir)
/src/libzmq.la
libpyzmq_la_LDFLAGS
=
-avoid-version
python/pyzmq.cpp
0 → 100644
View file @
77bc3790
/*
Copyright (c) 2007-2009 FastMQ Inc.
This file is part of 0MQ.
0MQ 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.
0MQ 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/>.
*/
#include <Python.h>
#include <zmq.hpp>
struct
pyZMQ
{
PyObject_HEAD
};
void
pyZMQ_dealloc
(
pyZMQ
*
self
)
{
self
->
ob_type
->
tp_free
((
PyObject
*
)
self
);
}
PyObject
*
pyZMQ_new
(
PyTypeObject
*
type
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
pyZMQ
*
self
=
(
pyZMQ
*
)
type
->
tp_alloc
(
type
,
0
);
return
(
PyObject
*
)
self
;
}
PyObject
*
pyZMQ_term
(
PyTypeObject
*
type
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
pyZMQ
*
self
=
(
pyZMQ
*
)
type
->
tp_alloc
(
type
,
0
);
static
const
char
*
kwlist
[]
=
{
"context"
,
NULL
};
PyObject
*
context
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"O"
,
(
char
**
)
kwlist
,
&
context
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_term
((
void
*
)
context
);
assert
(
rc
!=
0
);
return
(
PyObject
*
)
self
;
}
int
pyZMQ_init
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
return
0
;
}
PyObject
*
pyZMQ_context
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"app_threads"
,
"io_threads"
,
NULL
};
int
app_threads
;
int
io_threads
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"ii"
,
(
char
**
)
kwlist
,
&
app_threads
,
&
io_threads
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
void
*
context
=
zmq_init
(
app_threads
,
io_threads
);
if
(
context
==
NULL
)
{
assert
(
errno
==
EINVAL
);
PyErr_SetString
(
PyExc_ValueError
,
"Invalid argument"
);
}
return
(
PyObject
*
)
context
;
}
PyObject
*
pyZMQ_msg_init
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
zmq_msg
*
msg
;
int
rc
=
zmq_msg_init
(
msg
);
if
(
rc
==
-
1
)
{
assert
(
rc
==
ENOMEM
);
PyErr_SetString
(
PyExc_MemoryError
,
"Out of memory"
);
}
return
(
PyObject
*
)
msg
;
}
PyObject
*
pyZMQ_msg_init_size
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"size"
,
NULL
};
zmq_msg
*
msg
;
int
size
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"i"
,
(
char
**
)
kwlist
,
&
size
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_msg_init_size
(
msg
,
size
);
if
(
rc
==
-
1
)
{
assert
(
rc
==
ENOMEM
);
PyErr_SetString
(
PyExc_ValueError
,
"Out of memory"
);
}
return
(
PyObject
*
)
msg
;
}
PyObject
*
pyZMQ_msg_init_data
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"data"
,
"size"
,
"ffn"
,
NULL
};
PyObject
*
data
=
PyString_FromStringAndSize
(
NULL
,
0
);
zmq_msg
*
msg
;
PyObject
*
ffn
;
int
size
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"SiO"
,
(
char
**
)
kwlist
,
&
data
,
&
size
,
&
ffn
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_msg_init_data
(
msg
,
data
,
size
,
NULL
);
assert
(
rc
==
0
);
return
(
PyObject
*
)
msg
;
}
PyObject
*
pyZMQ_msg_close
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"msg"
,
NULL
};
PyObject
*
msg
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"O"
,
(
char
**
)
kwlist
,
&
msg
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_msg_close
((
zmq_msg
*
)
msg
);
assert
(
rc
==
0
);
return
(
PyObject
*
)
self
;
}
PyObject
*
pyZMQ_msg_move
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"src"
,
NULL
};
zmq_msg
*
dest
;
PyObject
*
src
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"O"
,
(
char
**
)
kwlist
,
&
src
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_msg_move
(
dest
,
(
zmq_msg
*
)
src
);
assert
(
rc
==
0
);
return
(
PyObject
*
)
dest
;
}
PyObject
*
pyZMQ_msg_copy
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"src"
,
NULL
};
PyObject
*
dest
;
PyObject
*
src
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"O"
,
(
char
**
)
kwlist
,
&
src
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_msg_copy
((
zmq_msg
*
)
dest
,
(
zmq_msg
*
)
src
);
assert
(
rc
==
0
);
return
(
PyObject
*
)
dest
;
}
PyObject
*
pyZMQ_msg_data
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"msg"
,
NULL
};
PyObject
*
msg
;
PyObject
*
data
=
PyString_FromStringAndSize
(
NULL
,
0
);
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"O"
,
(
char
**
)
kwlist
,
&
msg
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
data
=
(
PyObject
*
)
zmq_msg_data
((
zmq_msg
*
)
msg
);
return
(
PyObject
*
)
data
;
}
int
pyZMQ_msg_size
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"msg"
,
NULL
};
PyObject
*
msg
;
int
size
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"O"
,
(
char
**
)
kwlist
,
&
msg
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
size
=
zmq_msg_size
((
zmq_msg
*
)
msg
);
return
size
;
}
int
pyZMQ_msg_type
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"msg"
,
NULL
};
PyObject
*
msg
;
int
type
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"O"
,
(
char
**
)
kwlist
,
&
msg
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
type
=
zmq_msg_type
((
zmq_msg
*
)
msg
);
return
type
;
}
PyObject
*
pyZMQ_socket
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"context"
,
"type"
,
NULL
};
void
*
context
;
int
type
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"Oi"
,
(
char
**
)
kwlist
,
&
context
,
&
type
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
void
*
socket
=
zmq_socket
((
void
*
)
context
,
type
);
if
(
socket
==
NULL
)
{
assert
(
errno
==
EMFILE
||
errno
==
EINVAL
);
if
(
errno
==
EMFILE
)
PyErr_SetString
(
PyExc_MemoryError
,
"Too many threads"
);
else
PyErr_SetString
(
PyExc_ValueError
,
"Invalid argument"
);
}
return
(
PyObject
*
)
socket
;
}
PyObject
*
pyZMQ_close
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"socket"
,
NULL
};
PyObject
*
socket
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"O"
,
(
char
**
)
kwlist
,
&
socket
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_close
((
void
*
)
socket
);
assert
(
rc
==
0
);
return
(
PyObject
*
)
self
;
}
PyObject
*
pyZMQ_setsockopt
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"socket"
,
"option"
,
"optval"
,
NULL
};
printf
(
"setsockopt
\n
"
);
PyObject
*
socket
;
int
option
;
PyObject
*
optval
;
int
optvallen
;
int
rc
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"OiO"
,
(
char
**
)
kwlist
,
&
socket
,
&
option
,
&
optval
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
if
(
PyInt_Check
(
optval
))
rc
=
zmq_setsockopt
((
void
*
)
socket
,
option
,
(
void
*
)
optval
,
4
);
if
(
PyBool_Check
(
optval
))
rc
=
zmq_setsockopt
((
void
*
)
socket
,
option
,
(
void
*
)
optval
,
1
);
if
(
PyFloat_Check
(
optval
))
rc
=
zmq_setsockopt
((
void
*
)
socket
,
option
,
(
void
*
)
optval
,
4
);
if
(
PyString_Check
(
optval
))
rc
=
zmq_setsockopt
((
void
*
)
socket
,
option
,
(
void
*
)
optval
,
PyString_Size
(
optval
));
assert
(
rc
==
0
);
return
(
PyObject
*
)
self
;
}
PyObject
*
pyZMQ_bind
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
char
const
*
addr
=
NULL
;
PyObject
*
socket
;
static
const
char
*
kwlist
[]
=
{
"socket"
,
"addr"
,
NULL
};
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"Os"
,
(
char
**
)
kwlist
,
&
socket
,
&
addr
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_bind
((
void
*
)
socket
,
addr
);
if
(
rc
==
-
1
)
{
assert
(
errno
==
EINVAL
||
errno
==
EADDRINUSE
);
if
(
errno
==
EINVAL
)
PyErr_SetString
(
PyExc_ValueError
,
"Invalid argument"
);
else
PyErr_SetString
(
PyExc_ValueError
,
"Address in use"
);
}
return
(
PyObject
*
)
self
;
}
PyObject
*
pyZMQ_connect
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kw
)
{
char
const
*
addr
=
NULL
;
PyObject
*
socket
;
static
const
char
*
kwlist
[]
=
{
"socket"
,
"addr"
,
NULL
};
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kw
,
"Os"
,
(
char
**
)
kwlist
,
&
socket
,
&
addr
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_connect
((
void
*
)
socket
,
addr
);
if
(
rc
==
-
1
)
{
assert
(
errno
==
EINVAL
||
errno
==
EADDRINUSE
);
if
(
errno
==
EINVAL
)
PyErr_SetString
(
PyExc_ValueError
,
"Invalid argument"
);
else
PyErr_SetString
(
PyExc_ValueError
,
"Address in use"
);
}
return
(
PyObject
*
)
self
;
}
PyObject
*
pyZMQ_flush
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
static
const
char
*
kwlist
[]
=
{
"socket"
,
NULL
};
PyObject
*
socket
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"O"
,
(
char
**
)
kwlist
,
&
socket
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_flush
((
void
*
)
socket
);
assert
(
rc
==
0
);
return
(
PyObject
*
)
self
;
}
PyObject
*
pyZMQ_send
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
PyObject
*
msg
;
PyObject
*
socket
;
int
flags
=
0
;
static
const
char
*
kwlist
[]
=
{
"socket"
,
"msg"
,
"flags"
,
NULL
};
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"OOi"
,
(
char
**
)
kwlist
,
&
socket
,
&
msg
,
&
flags
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_send
((
void
*
)
socket
,
(
zmq_msg
*
)
msg
,
flags
);
assert
(
rc
==
0
||
(
rc
==
-
1
&&
errno
==
EAGAIN
));
return
(
PyObject
*
)
self
;
}
PyObject
*
pyZMQ_receive
(
pyZMQ
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
{
zmq_msg
*
msg
;
zmq_msg_init
(
msg
);
PyObject
*
socket
;
int
flags
=
0
;
static
const
char
*
kwlist
[]
=
{
"socket"
,
"flags"
,
NULL
};
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"Oi"
,
(
char
**
)
kwlist
,
&
socket
,
&
flags
))
PyErr_SetString
(
PyExc_SystemError
,
"PyArg_ParseTupleAndKeywords error"
);
int
rc
=
zmq_recv
(
socket
,
msg
,
flags
);
assert
(
rc
==
0
||
(
rc
==
-
1
&&
errno
==
EAGAIN
));
PyObject
*
py_message
=
PyString_FromStringAndSize
(
NULL
,
0
);
py_message
=
(
PyObject
*
)
zmq_msg_data
(
msg
);
int
py_message_size
=
zmq_msg_size
(
msg
);
int
py_message_type
=
zmq_msg_type
(
msg
);
zmq_msg_close
(
msg
);
return
Py_BuildValue
(
"isi"
,
rc
,
py_message
,
py_message_size
,
py_message_type
);
}
static
PyMethodDef
pyZMQ_methods
[]
=
{
{
"context"
,
(
PyCFunction
)
pyZMQ_context
,
METH_VARARGS
|
METH_KEYWORDS
,
"context (app_threads, io_threads) -> None
\n\n
"
"Creates new context
\n\n
"
"app_threads is the number of application threads.
\n\n
"
"io_threads is the number of io threads.
\n\n
"
},
{
"msg_init"
,
(
PyCFunction
)
pyZMQ_msg_init
,
METH_VARARGS
|
METH_KEYWORDS
,
"msg_init () -> None
\n\n
"
"Creates new message
\n\n
"
},
{
"msg_init_size"
,
(
PyCFunction
)
pyZMQ_msg_init_size
,
METH_VARARGS
|
METH_KEYWORDS
,
"msg_init_size (size) -> None
\n\n
"
"Creates new message of a specified size.
\n\n
"
"size if integer specifying the size of the message to be created.
\n\n
"
},
{
"msg_init_data"
,
(
PyCFunction
)
pyZMQ_msg_init_data
,
METH_VARARGS
|
METH_KEYWORDS
,
"msg_init_data (data, size, ffn) -> None
\n\n
"
"Initialises new message with data
\n\n
"
"data is pointer to the data of the message
\n\n
"
"size is integer specifying size of data
\n\n
"
"ffn is function to free alocated data
\n\n
"
},
{
"msg_close"
,
(
PyCFunction
)
pyZMQ_msg_close
,
METH_VARARGS
|
METH_KEYWORDS
,
"msg_close (msg) -> None
\n\n
"
"Deletes the message.
\n\n
"
"msg is the message the be freed
\n\n
"
},
{
"msg_move"
,
(
PyCFunction
)
pyZMQ_msg_move
,
METH_VARARGS
|
METH_KEYWORDS
,
"msg_move (src) -> dest
\n\n
"
"Move the content of the message from 'src' to 'dest'.
\n\n
"
"The content isn't copied, just moved. 'src' is an empty
\n\n
"
"message after the call. Original content of 'dest' message
\n\n
"
"is deallocated.
\n\n
"
},
{
"msg_copy"
,
(
PyCFunction
)
pyZMQ_msg_copy
,
METH_VARARGS
|
METH_KEYWORDS
,
"msg_copy (src) -> dest
\n\n
"
"Copy the 'src' message to 'dest'. The content isn't copied,
\n\n
"
"instead reference count is increased. Don't modify the message
\n\n
"
"data after the call as they are shared between two messages.
\n\n
"
"Original content of 'dest' message is deallocated.
\n\n
"
},
{
"msg_data"
,
(
PyCFunction
)
pyZMQ_msg_data
,
METH_VARARGS
|
METH_KEYWORDS
,
"msg_data (msg) -> data
\n\n
"
"Returns pointer to message data.
\n\n
"
},
{
"msg_size"
,
(
PyCFunction
)
pyZMQ_msg_size
,
METH_VARARGS
|
METH_KEYWORDS
,
"msg_size (msg) -> size
\n\n
"
"Returns size of a message.
\n\n
"
},
{
"msg_type"
,
(
PyCFunction
)
pyZMQ_msg_type
,
METH_VARARGS
|
METH_KEYWORDS
,
"msg_type (msg) -> type
\n\n
"
"Returns type of a message.
\n\n
"
},
{
"term"
,
(
PyCFunction
)
pyZMQ_term
,
METH_VARARGS
|
METH_KEYWORDS
,
"term (context) -> None
\n\n
"
"Deinitialise 0SOCKETS context including all the open sockets.
\n\n
"
"Closing sockets after zmq_term has been called will result in
\n\n
"
"undefined behaviour.
\n\n
"
},
{
"close"
,
(
PyCFunction
)
pyZMQ_close
,
METH_VARARGS
|
METH_KEYWORDS
,
"close (socket) -> None
\n\n
"
"Close the socket.
\n\n
"
},
{
"socket"
,
(
PyCFunction
)
pyZMQ_socket
,
METH_VARARGS
|
METH_KEYWORDS
,
"socket (context, type) -> None
\n\n
"
"Creates new socket.
\n\n
"
"'context' is a context_t object.
\n
"
"'type' is one of 'ZMQ_NOBLOCK', 'ZMQ_NOFLUSH', 'ZMQ_P2P', 'ZMQ_PUB', "
" 'ZMQ_SUB', 'ZMQ_REQ ZMQ_REP'
\n
"
},
{
"setsockopt"
,
(
PyCFunction
)
pyZMQ_setsockopt
,
METH_VARARGS
|
METH_KEYWORDS
,
"setsockopt (socket, option, value) -> None
\n\n
"
"Set socket options."
"Possible options are: 'ZMQ_HWM', 'ZMQ_LWM', 'ZMQ_SWAP', 'ZMQ_MASK', "
"'ZMQ_AFFINITY', 'ZMQ_IDENTITY'."
},
{
"bind"
,
(
PyCFunction
)
pyZMQ_bind
,
METH_VARARGS
|
METH_KEYWORDS
,
"bind (addr) -> None
\n\n
"
"Bind socket to specified address."
},
{
"connect"
,
(
PyCFunction
)
pyZMQ_connect
,
METH_VARARGS
|
METH_KEYWORDS
,
"connect (addr) -> None
\n\n
"
"connect socket to specified address."
},
{
"flush"
,
(
PyCFunction
)
pyZMQ_flush
,
METH_VARARGS
|
METH_KEYWORDS
,
"flush (addr) -> None
\n\n
"
"flush "
},
{
"send"
,
(
PyCFunction
)
pyZMQ_send
,
METH_VARARGS
|
METH_KEYWORDS
,
"send (message, flags) -> sent
\n\n
"
"Send a message to within the socket, "
"returns integer specifying if the message was sent.
\n
"
"'message' is message to be sent.
\n
"
"'flags' is integer specifying send options.
\n
"
},
{
"receive"
,
(
PyCFunction
)
pyZMQ_receive
,
METH_VARARGS
|
METH_KEYWORDS
,
"receive (flags) -> (received, message, type)
\n\n
"
"Receive a message."
"'flags' is integer specifying receive options.
\n
"
"'message' is string storing the message received.
\n
"
"'type' is type of the message received.
\n
"
},
{
NULL
}
};
static
const
char
*
pyZMQ_ZMQ_doc
=
"0MQ messaging session
\n\n
"
"Available functions:
\n
"
" context
\n
"
" socket
\n
"
" setsockopt
\n
"
" bind
\n
"
" send
\n
"
" flush
\n
"
" receive
\n\n
"
;
static
PyTypeObject
pyZMQType
=
{
PyObject_HEAD_INIT
(
NULL
)
0
,
"libpyzmq.Zmq"
,
/* tp_name (This will appear in the default
textual representation of our objects and
in some error messages)*/
sizeof
(
pyZMQ
),
/* tp_basicsize */
0
,
/* tp_itemsize */
(
destructor
)
pyZMQ_dealloc
,
/* tp_dealloc */
0
,
/* tp_print */
0
,
/* tp_getattr */
0
,
/* tp_setattr */
0
,
/* tp_compare */
0
,
/* tp_repr */
0
,
/* tp_as_number */
0
,
/* tp_as_sequence */
0
,
/* tp_as_mapping */
0
,
/* tp_hash */
0
,
/* tp_call */
0
,
/* tp_str */
0
,
/* tp_getattro */
0
,
/* tp_setattro */
0
,
/* tp_as_buffer */
Py_TPFLAGS_DEFAULT
,
/* tp_flags */
(
char
*
)
pyZMQ_ZMQ_doc
,
/* tp_doc */
0
,
/* tp_traverse */
0
,
/* tp_clear */
0
,
/* tp_richcompare */
0
,
/* tp_weaklistoffset */
0
,
/* tp_iter */
0
,
/* tp_iternext */
pyZMQ_methods
,
/* tp_methods */
0
,
/* tp_members */
0
,
/* tp_getset */
0
,
/* tp_base */
0
,
/* tp_dict */
0
,
/* tp_descr_get */
0
,
/* tp_descr_set */
0
,
/* tp_dictoffset */
(
initproc
)
pyZMQ_init
,
/* tp_init */
0
,
/* tp_alloc */
pyZMQ_new
,
/* tp_new */
};
static
PyMethodDef
module_methods
[]
=
{
{
NULL
,
NULL
,
0
,
NULL
}
};
#ifndef PyMODINIT_FUNC
#define PyMODINIT_FUNC void
#endif
static
const
char
*
pyZMQ_doc
=
"0MQ Python Module
\n\n
"
"Constructor:
\n
"
" z = libpyzmq.Zmq ()
\n
"
"Available functions:
\n
"
" context
\n
"
" socket
\n
"
" setsockopt
\n
"
" bind
\n
"
" send
\n
"
" flush
\n
"
" receive
\n
"
"
\n
"
"For more information see http://www.zeromq.org.
\n
"
"
\n
"
"0MQ is distributed under GNU Lesser General Public License v3
\n
"
;
PyMODINIT_FUNC
initlibpyzmq
(
void
)
{
if
(
PyType_Ready
(
&
pyZMQType
)
<
0
)
return
;
PyObject
*
m
=
Py_InitModule3
(
"libpyzmq"
,
module_methods
,
(
char
*
)
pyZMQ_doc
);
if
(
!
m
)
return
;
Py_INCREF
(
&
pyZMQType
);
PyModule_AddObject
(
m
,
"Zmq"
,
(
PyObject
*
)
&
pyZMQType
);
PyObject
*
d
=
PyModule_GetDict
(
m
);
PyObject
*
t
=
PyInt_FromLong
(
ZMQ_NOBLOCK
);
PyDict_SetItemString
(
d
,
"ZMQ_NOBLOCK"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_NOFLUSH
);
PyDict_SetItemString
(
d
,
"ZMQ_NOFLUSH"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_P2P
);
PyDict_SetItemString
(
d
,
"ZMQ_P2P"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_PUB
);
PyDict_SetItemString
(
d
,
"ZMQ_PUB"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_SUB
);
PyDict_SetItemString
(
d
,
"ZMQ_SUB"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_REQ
);
PyDict_SetItemString
(
d
,
"ZMQ_REQ"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_REP
);
PyDict_SetItemString
(
d
,
"ZMQ_REP"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_HWM
);
PyDict_SetItemString
(
d
,
"ZMQ_HWM"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_LWM
);
PyDict_SetItemString
(
d
,
"ZMQ_LWM"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_SWAP
);
PyDict_SetItemString
(
d
,
"ZMQ_SWAP"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_MASK
);
PyDict_SetItemString
(
d
,
"ZMQ_MASK"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_AFFINITY
);
PyDict_SetItemString
(
d
,
"ZMQ_AFFINITY"
,
t
);
Py_DECREF
(
t
);
t
=
PyInt_FromLong
(
ZMQ_IDENTITY
);
PyDict_SetItemString
(
d
,
"ZMQ_IDENTITY"
,
t
);
Py_DECREF
(
t
);
}
python/setup.py.in
0 → 100644
View file @
77bc3790
from distutils.core import setup, Extension
module1 = Extension('libpyzmq',
libraries = ['zmq'],
library_dirs = ['@prefix@/lib'],
include_dirs = ['@PYTHON_SETUP_INCLUDES@','@prefix@/include'],
sources = ['pyzmq.cpp'])
setup (name = 'libyzmq',
version = '@VERSION@',
description = '0MQ Python library',
ext_modules = [module1])
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment