forked from fade/lisp-zmq
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ffi.lisp
131 lines (98 loc) · 2.53 KB
/
ffi.lisp
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
(in-package :zmq)
(define-foreign-library libzmq
(t (:default "libzmq")))
(use-foreign-library libzmq)
(defcfun (%memcpy "memcpy") :pointer
(dst :pointer)
(src :pointer)
(len :long))
(defctype socket :pointer)
(defctype context :pointer)
(defctype msg :pointer)
(defcstruct pollitem
(socket socket)
(fd #+win32 win32-socket
#-win32 :int)
(events :short)
(revents :short))
(defcstruct msg
(content :pointer)
(flags :uchar)
(vsm-size :uchar)
(vsm-data :uchar :count #.max-vsm-size))
(defcfun (%bind "zmq_bind") :int
(socket socket)
(endpoint :string))
(defcfun (%close "zmq_close") :int
(socket socket))
(defcfun (%connect "zmq_connect") :int
(socket socket)
(endpoint :string))
(defcfun (%errno "zmq_errno") :int)
(defcfun (%getsockopt "zmq_getsockopt") :int
(socket socket)
(option-name socket-option)
(option-value :pointer)
(option-len (:pointer size-t)))
(defcfun (%init "zmq_init") context
(io-threads :int))
(defcfun (%msg-close "zmq_msg_close") :int
(msg msg))
(defcfun (%msg-copy "zmq_msg_copy") :int
(dest msg)
(src msg))
(defcfun (%msg-data "zmq_msg_data") :pointer
(msg msg))
(defcfun (%msg-init-data "zmq_msg_init_data") :int
(msg msg)
(data :pointer)
(size size-t)
(ffn :pointer)
(hint :pointer))
(defcfun (%msg-init-size "zmq_msg_init_size") :int
(msg msg)
(size size-t))
(defcfun (%msg-init "zmq_msg_init") :int
(msg msg))
(defcfun (%msg-move "zmq_msg_move") :int
(dest msg)
(src msg))
(defcfun (%msg-size "zmq_msg_size") size-t
(msg msg))
(defcfun (%poll "zmq_poll") :int
(items (:pointer pollitem))
(nitems :int)
(timeout :long))
(defcfun (%recv "zmq_recv") :int
(socket socket)
(msg msg)
(flags recv-options))
(defcfun (%send "zmq_send") :int
(socket socket)
(msg msg)
(flags send-options))
(defcfun (%setsockopt "zmq_setsockopt") :int
(socket socket)
(option-name socket-option)
(option-value :pointer)
(option-len size-t))
(defcfun (%socket "zmq_socket") socket
(context context)
(type socket-type))
(defcfun (%strerror "zmq_strerror") :string
(errnum :int))
(defcfun (%term "zmq_term") :int
(context context))
(defcfun (%version "zmq_version") :void
(major (:pointer :int))
(minor (:pointer :int))
(patch (:pointer :int)))
(defcfun (%device "zmq_device") :int
(device device-type)
(frontend socket)
(backend socket))
(defcfun (%stopwatch-start "zmq_stopwatch_start") :pointer)
(defcfun (%stopwatch-stop "zmq_stopwatch_stop") :ulong
(watch :pointer))
(defcfun (%sleep "zmq_sleep") :void
(seconds :int))