X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=db-postgresql-socket%2Fpostgresql-socket-api.lisp;h=40c904fca70e487261b496d3ad4abd46cc081d02;hb=064bb338ef1375940085db10ec5a202d32e6b68b;hp=13ce8e9965d2f5a1765796c904c4bdaabd5e162f;hpb=5691bb90517d7c565a141d131da76c3de1f8d566;p=clsql.git diff --git a/db-postgresql-socket/postgresql-socket-api.lisp b/db-postgresql-socket/postgresql-socket-api.lisp index 13ce8e9..40c904f 100644 --- a/db-postgresql-socket/postgresql-socket-api.lisp +++ b/db-postgresql-socket/postgresql-socket-api.lisp @@ -310,7 +310,6 @@ socket interface" (defvar *postgresql-server-socket-timeout* 60 "Timeout in seconds for reads from the PostgreSQL server.") - #+(or cmu scl) (defun open-postgresql-socket (host port) (etypecase host @@ -323,6 +322,26 @@ socket interface" (string (ext:connect-to-inet-socket host port)))) +#+sbcl +(defun open-postgresql-socket (host port) + (etypecase host + (pathname + ;; Directory to unix-domain socket + (sb-bsd-sockets:socket-connect + (namestring + (make-pathname :name ".s.PGSQL" :type (princ-to-string port) + :defaults host)))) + (string + (let ((sock (make-instance 'sb-bsd-sockets:inet-socket + :type :stream + :protocol :tcp))) + (sb-bsd-sockets:socket-connect + sock + (sb-bsd-sockets:host-ent-address + (sb-bsd-sockets:get-host-by-name host)) + port) + sock)))) + #+(or cmu scl) (defun open-postgresql-socket-stream (host port) (system:make-fd-stream @@ -334,11 +353,10 @@ socket interface" #+sbcl (defun open-postgresql-socket-stream (host port) - (sb-sys:make-fd-stream - (open-postgresql-socket host port) - :input t :output t :element-type '(unsigned-byte 8) - :buffering :none - :timeout *postgresql-server-socket-timeout*)) + (sb-bsd-sockets:socket-make-stream + (open-postgresql-socket host port) :input t :output t + :element-type '(unsigned-byte 8))) + #+allegro (defun open-postgresql-socket-stream (host port) @@ -357,6 +375,21 @@ socket interface" :remote-port port :remote-host host :connect :active :nodelay t)))))) +#+openmcl +(defun open-postgresql-socket-stream (host port) + (etypecase host + (pathname + (let ((path (namestring + (make-pathname :name ".s.PGSQL" :type (princ-to-string port) + :defaults host)))) + (ccl:make-socket :type :stream :address-family :file + :connect :active + :remote-filename path :local-filename path))) + (string + (ccl:make-socket :type :stream :address-family :internet + :remote-port port :remote-host host + :connect :active :nodelay t)))) + #+lispworks (defun open-postgresql-socket-stream (host port) (etypecase host