Changeset 5375


Ignore:
Timestamp:
Oct 18, 2006, 6:33:27 AM (18 years ago)
Author:
Gary Byers
Message:

Accept an :EXTERNAL-FORMAT argument to MAKE-SOCKET, pass it down to whatever function
actually creates a stream socket.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/level-1/l1-sockets.lisp

    r5305 r5375  
    591591                    keepalive reuse-address nodelay broadcast linger
    592592                    local-port local-host backlog class out-of-band-inline
    593                     local-filename remote-filename sharing basic)
     593                    local-filename remote-filename sharing basic
     594                    external-format)
    594595  "Create and return a new socket."
    595596  (declare (dynamic-extent keys))
     
    597598                   keepalive reuse-address nodelay broadcast linger
    598599                   local-port local-host backlog class out-of-band-inline
    599                    local-filename remote-filename sharing basic))
     600                   local-filename remote-filename sharing basic external-format))
    600601  (ecase address-family
    601602    ((:file) (apply #'make-file-socket keys))
     
    670671(defun make-tcp-stream-socket (fd &key remote-host
    671672                                  remote-port
    672                                   eol
    673673                                  format
    674674                                  (class 'tcp-stream)
    675675                                  (basic t)
     676                                  external-format
    676677                                  &allow-other-keys)
    677678  (inet-connect fd
    678679                (host-as-inet-host remote-host)
    679680                (port-as-inet-port remote-port "tcp"))
    680   (make-tcp-stream fd :format format :eol eol :class class :basic basic))
     681  (make-tcp-stream fd :format format :external-format external-format :class class :basic basic))
    681682
    682683(defun make-file-stream-socket (fd &key remote-filename
    683                                    eol
     684                                   external-format
    684685                                   format
    685686                                   (class 'file-socket-stream)
     
    687688                                   &allow-other-keys)
    688689  (file-socket-connect fd remote-filename)
    689   (make-file-socket-stream fd :format format :eol eol :class class :basic basic))
    690 
    691 
    692 (defun make-tcp-stream (fd &key format eol (class 'tcp-stream) sharing (basic t) &allow-other-keys)
    693   (declare (ignore eol))                ;???
    694   (let ((element-type (ecase format
    695                         ((nil :text) 'character)
    696                         ((:binary :bivalent) '(unsigned-byte 8)))))
    697     ;; TODO: check out fd-stream-advance, -listen, -eofp, -force-output, -close
    698     ;; See if should specialize any of 'em.
    699     (make-fd-stream fd
    700                     :class class
    701                     :direction :io
    702                     :element-type element-type
    703                     :sharing sharing
    704                     :character-p t
    705                     :basic basic)))
    706 
    707 (defun make-file-socket-stream (fd &key format eol (class 'file-socket-stream)  sharing basic &allow-other-keys)
    708   (declare (ignore eol))                ;???
    709   (let ((element-type (ecase format
    710                         ((nil :text) 'character)
    711                         ((:binary :bivalent) '(unsigned-byte 8)))))
    712     ;; TODO: check out fd-stream-advance, -listen, -eofp, -force-output, -close
    713     ;; See if should specialize any of 'em.
    714     (make-fd-stream fd
    715                     :class class
    716                     :direction :io
    717                     :element-type element-type
    718                     :sharing sharing
    719                     :character-p t
    720                     :basic basic)))
     690  (make-file-socket-stream fd :format format :external-format external-format :class class :basic basic))
     691
     692
     693(defun make-tcp-stream (fd &key format external-format (class 'tcp-stream) sharing (basic t) &allow-other-keys)
     694  (let* ((external-format (normalize-external-format :socket external-format)))
     695    (let ((element-type (ecase format
     696                          ((nil :text) 'character)
     697                          ((:binary :bivalent) '(unsigned-byte 8)))))
     698      ;; TODO: check out fd-stream-advance, -listen, -eofp, -force-output, -close
     699      ;; See if should specialize any of 'em.
     700      (make-fd-stream fd
     701                      :class class
     702                      :direction :io
     703                      :element-type element-type
     704                      :sharing sharing
     705                      :character-p t
     706                      :encoding (external-format-character-encoding external-format)
     707                      :line-termination (external-format-line-termination external-format)
     708                      :basic basic))))
     709
     710(defun make-file-socket-stream (fd &key format external-format (class 'file-socket-stream)  sharing basic &allow-other-keys)
     711  (let* ((external-format (normalize-external-format :socket external-format)))
     712 
     713    (let ((element-type (ecase format
     714                          ((nil :text) 'character)
     715                          ((:binary :bivalent) '(unsigned-byte 8)))))
     716      ;; TODO: check out fd-stream-advance, -listen, -eofp, -force-output, -close
     717      ;; See if should specialize any of 'em.
     718      (make-fd-stream fd
     719                      :class class
     720                      :direction :io
     721                      :element-type element-type
     722                      :encoding (external-format-character-encoding external-format)
     723                      :line-termination (external-format-line-termination external-format)
     724                      :sharing sharing
     725                      :character-p t
     726                      :basic basic))))
    721727
    722728(defun make-tcp-listener-socket (fd &rest keys &key backlog &allow-other-keys)
Note: See TracChangeset for help on using the changeset viewer.