changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/lib/net/pkg.lisp

changeset 381: 386d51cf61ca
parent: d1d64b856fae
child: 24bdb598528e
author: Richard Westhaver <ellis@rwest.io>
date: Tue, 28 May 2024 23:12:31 -0400
permissions: -rw-r--r--
description: add ffi/readline, net updates
1 (defpackage :net/core
2  (:use :cl :std :sb-bsd-sockets :sb-thread :sb-concurrency)
3  (:export
4  ;; err
5  :net-error
6  :codec-error
7  :protocol-error
8  ;; obj
9  :transport
10  :codec
11  :protocol
12  :client
13  :server
14  :peer
15  :proxy
16  :tunnel))
17 
18 (defpackage :net/util
19  (:use :cl :obj :dat/proto :std :log :net/core :sb-bsd-sockets)
20  (:export :get-address-by-name))
21 
22 (defpackage :net/sans-io
23  (:use :cl :obj :dat/proto :std :net/core :sb-bsd-sockets)
24  (:export :sans-io-protocol :protocol-version :protocol-name :protocol-features
25  :*max-connection-id* :*initial-mtu* :*max-stream-count* :*max-udp-payload*
26  :*word-length* :sans-io-error :packet-serializer-error :packet-deserializer-error
27  :packet-header-serializer-error :packet-header-deserializer-error :frame-serializer-error :frame-deserializer-error
28  :stream-id :stream-direction :event-id :event
29  :endpoint-event :connection-event :connection-id :connection-id-generator
30  :connection :connection-idle-timeout :peer-id :peer-address
31  :peer :clientp :serverp :endpoint-config
32  :transport-config :server-config :client-config :endpoint
33  :handle-event :handle :connect :default-client-config
34  :packet-number :packet-header :packet-payload :packet
35  :frame :size-bound :frame-type :with-endpoint
36  :with-client :define-protocol :define-endpoint :define-event
37  :define-handler))
38 
39 (defpackage :net/udp
40  (:nicknames :udp)
41  (:use :cl :std :net/core :sb-bsd-sockets)
42  (:export
43  :udp-server
44  :with-udp-client
45  :with-udp-server
46  :with-udp-client-and-server))
47 
48 (defpackage :net/tcp
49  (:nicknames :tcp)
50  (:use :cl :std :net/core :sb-bsd-sockets)
51  (:export
52  :tcp-server
53  :with-tcp-client))
54 
55 (defpackage :net/codec/punycode
56  (:nicknames :codec/punycode)
57  (:use :cl)
58  (:export
59  :encode-punycode
60  :decode-punycode
61  :encode-domain
62  :decode-domain))
63 
64 (defpackage :net/codec/dns
65  (:nicknames :codec/dns)
66  (:use :cl :std :net/core :net/codec/punycode)
67  (:export
68  :*record-type-table*
69  :record-type-id
70  :id-record-type
71  :decode-record :decode-response
72  :encode-host :decode-host :encode-header :decode-header
73  :encode-query :decode-query
74  :decode-data))
75 
76 (defpackage :net/codec/tlv
77  (:nicknames :codec/tlv)
78  (:use :cl :std :net/core :dat/proto)
79  (:export
80  :tlv :tlv-type :tlv-length :tlv-value :make-tlv))
81 
82 (defpackage :net/codec/osc
83  (:nicknames :codec/osc)
84  (:use :cl :std :log :net/core)
85  (:export
86  :*default-osc-buffer-size*
87  :make-message
88  :message
89  :make-bundle
90  :bundle
91  :format-osc-data
92  :command
93  ;; :args ;; conflict
94  :timetag
95  :elements
96  :encode-message
97  :encode-bundle
98  :decode-message
99  :decode-bundle
100  :make-osc-tree
101  :dp-register
102  :dp-remove
103  :dp-match
104  :dispatch
105  :get-current-timetag ; osc-time
106  :timetag+
107  :get-unix-time
108  :unix-time->timetag
109  :timetag->unix-time
110  :print-as-double))
111 
112 ;; sb-thread::make-condition
113 ;; (defpackage :net/proto/crew
114 ;; (:nicknames :net/crew)
115 ;; (:use :cl :sb-bsd-sockets :std :net/core :obj/id)
116 ;; (:import-from #:sb-thread
117 ;; #:condition-notify
118 ;; #:condition-wait
119 ;; ;; #:make-condition-variable
120 ;; #:make-mutex ;; make-lock
121 ;; #:make-thread
122 ;; #:with-mutex)
123 ;; (:import-from :sb-concurrency
124 ;; :make-gate)
125 ;; (:import-from #:swank-client
126 ;; #:slime-close
127 ;; #:slime-connect
128 ;; #:slime-eval
129 ;; #:slime-eval-async
130 ;; #:slime-migrate-evals
131 ;; #:slime-network-error
132 ;; #:slime-pending-evals-p
133 ;; #:swank-connection
134 ;; #:with-slime-connection)
135 ;; (:export
136 ;; :crew-connection-info
137 ;; :make-worker-pool
138 ;; :crew-worker :crew-worker-pool
139 ;; :*crew-worker-pools-lock*
140 ;; :*crew-worker-pools*
141 ;; :connect-worker
142 ;; :disconnect-worker
143 ;; :parallel-mapcar :parallel-reduce
144 ;; :eval-form-all-workers
145 ;; :eval-form-repeatedly
146 ;; :eval-repeatedly-async-state
147 ;; :worker-count
148 ;; :reconnect-worker))
149 
150 (defpackage :net/proto/swank
151  (:use :cl :sb-bsd-sockets :std :net/core :net/tcp)
152  (:export))
153 
154 (defpackage :net/proto/dns
155  (:nicknames :net/dns)
156  (:use :cl :sb-bsd-sockets :std :net/core :net/udp :codec/dns)
157  (:export
158  :dns-port
159  :*cloudflare-servers*
160  :*dnswatch-servers*
161  :*google-servers*
162  :*opendns-servers*
163  :*quad9-servers*
164  :*dns-servers*
165  :query
166  :query-data
167  :resolve
168  :hostname
169  :response-code
170  :dns-servers-exhausted
171  :response-code-name
172  :with-dns-error-handling))
173 
174 (defpackage :net/proto/ssh
175  (:use :cl :std :net/core :sb-bsd-sockets)
176  (:export))
177 
178 (defpackage :net/proto/http
179  (:nicknames :http)
180  (:use :cl :std :net/core :sb-bsd-sockets :parse/bytes :io/xsubseq :io/smart-buffer)
181  (:export
182  :make-http-parser
183  :http-request
184  :http-response
185  :make-http-request
186  :make-http-response
187  :http-request-p
188  :http-response-p
189  :make-callbacks
190  :http-version
191  :http-major-version
192  :http-minor-version
193  :http-method
194  :http-resource
195  :http-status
196  :http-status-text
197  :http-content-length
198  :http-chunked-p
199  :http-upgrade-p
200  :http-headers
201  ;; multipart parser
202  :make-multipart-parser
203  ;; Low-level parser API
204  :http
205  :http-p
206  :make-http
207  :parse-request
208  :parse-response
209  :http-multipart-parse
210  :ll-multipart-parser
211  :make-ll-multipart-parser
212  ;; Error
213  :http-error
214  :callback-error
215  :cb-message-begin
216  :cb-url
217  :cb-first-line
218  :cb-header-field
219  :cb-header-value
220  :cb-headers-complete
221  :cb-body
222  :cb-message-complete
223  :cb-status
224 
225  :parsing-error
226  :invalid-eof-state
227  :header-overflow
228  :closed-connection
229  :invalid-version
230  :invalid-status
231  :invalid-method
232  :invalid-url
233  :invalid-host
234  :invalid-port
235  :invalid-path
236  :invalid-query-string
237  :invalid-fragment
238  :lf-expected
239  :invalid-header-token
240  :invalid-content-length
241  :invalid-chunk-size
242  :invalid-constant
243  :invalid-internal-state
244  :strict-error
245  :paused-error
246  :unknown-error
247 
248  :multipart-parsing-error
249  :invalid-multipart-body
250  :invalid-boundary
251 
252  :header-value-parsing-error
253  :invalid-header-value
254  :invalid-parameter-key
255  :invalid-parameter-value))
256 
257 (defpackage net/cookie
258  (:use :cl :parse/bytes)
259  (:import-from :obj/time
260  :today
261  :timestamp-century
262  :timestamp-to-universal
263  :universal-to-timestamp
264  :format-timestring
265  :encode-timestamp
266  :*abbreviated-subzone-name->timezone-list*
267  :reread-timezone-repository
268  :timezone-subzones
269  :subzone-abbrev
270  :subzone-offset
271  :+gmt-zone+)
272  (:export :parse-set-cookie-header
273  :write-cookie-header
274  :write-set-cookie-header
275  :cookie
276  :make-cookie
277  :cookie=
278  :cookie-equal
279  :cookie-name
280  :cookie-value
281  :cookie-expires
282  :cookie-path
283  :cookie-domain
284  :cookie-same-site
285  :cookie-max-age
286  :cookie-partitioned
287  :cookie-secure-p
288  :cookie-httponly-p
289  :cookie-origin-host
290  :cookie-jar
291  :make-cookie-jar
292  :cookie-jar-cookies
293  :cookie-jar-host-cookies
294  :merge-cookies))
295 
296 (defpackage :net/req
297  (:nicknames :req)
298  (:shadowing-import-from :std/type :octet :octet-vector)
299  (:shadow :get :delete)
300  (:use :cl :std :obj/uri :net/proto/http :babel :net/cookie :fast-io :dat/base64 :cl+ssl :sb-gray)
301  (:shadowing-import-from :babel :octets-to-string)
302  (:export
303  :request
304  :get
305  :post
306  :head
307  :put
308  :patch
309  :delete
310  :fetch
311  :*default-connect-timeout*
312  :*default-read-timeout*
313  :*default-proxy*
314  :*verbose*
315  :*no-ssl*
316  :*connection-pool*
317  :*use-connection-pool*
318  :make-connection-pool
319  :clear-connection-pool
320  ;; Restarts
321  :retry-request
322  :ignore-and-continue))
323 
324 (defpackage :net/fetch
325  (:nicknames :fetch)
326  (:use :cl :std :obj/uri)
327  (:export :fetch :download))
328 
329 (defpackage :net/srv
330  (:nicknames :srv)
331  (:use :cl :std :obj/uri :net/core :net/proto/http :net/sans-io :net/cookie :dat/base64 :sb-gray)
332  (:export))
333 
334 (in-package :std-user)
335 
336 (defpkg :net
337  (:use-reexport
338  :net/core
339  :net/tcp
340  :net/udp
341  :net/sans-io
342  :net/codec/dns
343  :net/codec/osc
344  :net/codec/tlv
345  :net/proto/dns
346  ;; :net/proto/crew
347  :net/proto/ssh
348  :net/proto/http))