1 ;; This file is part of CL-ZMQ.
5 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9 (defcfun ("memcpy" %memcpy
) :pointer
14 (defcfun ("zmq_version" %version
) :void
19 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
21 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
23 (defcfun ("zmq_errno" %errno
) :int
)
25 (defcfun ("zmq_strerror" %strerror
) :pointer
28 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
29 ;; 0MQ data structures
30 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
32 (defctype c-context
:pointer
)
34 (defctype c-socket
:pointer
)
39 (defcstruct c-pollitem
45 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
47 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
49 (defcfun ("zmq_ctx_new" %ctx-new
) c-context
)
51 (defcfun ("zmq_ctx_get" %ctx-get
) :int
55 (defcfun ("zmq_ctx_set" %ctx-set
) :int
60 (defcfun ("zmq_ctx_destroy" %ctx-destroy
) :int
63 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
65 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
67 (defcfun ("zmq_socket" %socket
) c-socket
71 (defcfun ("zmq_close" %close
) :int
74 (defcfun ("zmq_getsockopt" %getsockopt
) :int
77 (option-value :pointer
)
78 (option-len :pointer
))
80 (defcfun ("zmq_setsockopt" %setsockopt
) :int
83 (option-value :pointer
)
86 (defcfun ("zmq_bind" %bind
) :int
88 (endpoint :pointer
:char
))
90 (defcfun ("zmq_unbind" %unbind
) :int
92 (endpoint :pointer
:char
))
94 (defcfun ("zmq_connect" %connect
) :int
96 (endpoint :pointer
:char
))
98 (defcfun ("zmq_disconnect" %disconnect
) :int
100 (endpoint :pointer
:char
))
102 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
103 ;; 0MQ message definition.
104 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
106 (defcfun ("zmq_msg_init" %msg-init
) :int
109 (defcfun ("zmq_msg_init_size" %msg-init-size
) :int
113 ;; (xxx)freiksenet: This might not work properly. I haven't tested it myself,
114 ;; but this blog post suggest that it wont.
115 ;; http://13-49.blogspot.fi/2010/06/why-zero-copy-is-missing-in-cl-zmq.html
116 (defcallback zmq-free
:void
((ptr :pointer
) (hint :pointer
))
117 (declare (ignorable hint
))
120 (defcfun ("zmq_msg_init_data" %%msg-init-data
) :int
127 (defun %zmq-init-data
(msg data size
)
128 (%%msg-init-data msg data size
'zmq-free nil
))
129 ;; End of potentially broken code
131 (defcfun ("zmq_msg_close" %msg-close
) :int
134 (defcfun ("zmq_msg_move" %msg-move
) :int
138 (defcfun ("zmq_msg_copy" %msg-copy
) :int
142 (defcfun ("zmq_msg_data" %msg-data
) :pointer
145 (defcfun ("zmq_msg_size" %msg-size
) :int
148 (defcfun ("zmq_msg_get" %msg-get
) :int
152 (defcfun ("zmq_msg_set" %msg-set
) :int
157 (defcfun ("zmq_msg_more" %msg-more
) :int
160 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
162 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
164 (defcfun ("zmq_send" %send
) :int
170 (defcfun ("zmq_recv" %recv
) :int
176 (defcfun ("zmq_msg_send" %msg-send
) :int
181 (defcfun ("zmq_msg_recv" %msg-recv
) :int
186 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
188 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
190 (defcfun ("zmq_poll" %poll
) :int
195 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
197 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
199 (defcfun ("zmq_proxy" proxy
) :int