sbcl stuff

This commit is contained in:
Ian Keane 2020-01-20 14:13:08 -05:00
parent 1d1dbc34df
commit 5d91dbb667
335 changed files with 119806 additions and 1 deletions

View file

@ -0,0 +1,99 @@
;;;; -*- Mode: Common-Lisp -*-
;;;; See LICENSE for licensing information.
(in-package :usocket)
(defun handle-condition (condition &optional (socket nil))
(typecase condition
;; TODO: Add additional conditions as appropriate
(mezzano.network.tcp:connection-timed-out
(error 'timeout-error :socket socket))))
(defun socket-connect (host port &key (protocol :stream) element-type
timeout deadline (nodelay nil nodelay-p)
local-host local-port)
(declare (ignore local-host local-port))
(when deadline
(unsupported 'deadline 'socket-connect))
(when (and nodelay-p (not (eq nodelay :if-supported)))
(unsupported 'nodelay 'socket-connect))
(when timeout
(unsupported 'timeout 'socket-connect))
(with-mapped-conditions ()
(ecase protocol
(:stream
(let ((s (mezzano.network.tcp:tcp-stream-connect host port :element-type element-type)))
(make-stream-socket :socket s
:stream s)))
(:datagram
;; TODO:
(unsupported 'datagram 'socket-connect)))))
(defun socket-listen (host port &key reuseaddress
(reuse-address nil reuse-address-supplied-p)
(backlog 5)
(element-type 'character))
(declare (ignore reuseaddress reuse-address reuse-address-supplied-p))
(let ((ip (mezzano.network.ip:make-ipv4-address host)))
(make-stream-server-socket (mezzano.network.tcp:tcp-listen ip port :backlog backlog)
:element-type element-type)))
(defun get-hosts-by-name (name)
(declare (ignore name)))
(defun get-host-by-address (address)
(declare (ignore address)))
(defun %setup-wait-list (wait-list)
(declare (ignore wait-list)))
(defun %add-waiter (wait-list waiter)
(declare (ignore wait-list waiter)))
(defun %remove-waiter (wait-list waiter)
(declare (ignore wait-list waiter)))
(defun wait-for-input-internal (wait-list &key timeout)
(declare (ignore wait-list timeout)))
(defmethod socket-close ((usocket stream-usocket))
(with-mapped-conditions ()
(close (socket-stream usocket))))
(defmethod socket-close ((usocket stream-server-usocket))
(with-mapped-conditions ()
(mezzano.network.tcp:close-tcp-listener (socket usocket))))
(defmethod socket-accept ((usocket stream-server-usocket) &key element-type)
(declare (ignore element-type))
(with-mapped-conditions (usocket)
(let ((s (mezzano.network.tcp:tcp-accept (socket usocket))))
(make-stream-socket :socket s
:stream s))))
(defmethod get-local-name ((usocket stream-usocket))
(values (get-local-address usocket)
(get-local-port usocket)))
(defmethod get-peer-name ((usocket stream-usocket))
(values (get-peer-address usocket)
(get-peer-port usocket)))
(defmethod get-local-address ((usocket stream-usocket))
(mezzano.network.ip:ipv4-address-to-string
(mezzano.network.tcp:tcp-connection-local-ip
(mezzano.network.tcp:tcp-stream-connection (socket usocket)))))
(defmethod get-local-port ((usocket stream-usocket))
(mezzano.network.tcp:tcp-connection-local-port
(mezzano.network.tcp:tcp-stream-connection (socket usocket))))
(defmethod get-peer-address ((usocket stream-usocket))
(mezzano.network.ip:ipv4-address-to-string
(mezzano.network.tcp:tcp-connection-remote-ip
(mezzano.network.tcp:tcp-stream-connection (socket usocket)))))
(defmethod get-peer-port ((usocket stream-usocket))
(mezzano.network.tcp:tcp-connection-remote-port
(mezzano.network.tcp:tcp-stream-connection (socket usocket))))