Changeset 5305
- Timestamp:
- Oct 6, 2006, 3:40:46 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/level-1/l1-sockets.lisp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/level-1/l1-sockets.lisp
r5225 r5305 69 69 (defun %bswap32 (x) 70 70 (declare (type (unsigned-byte 32) x)) 71 (dpb (ldb (byte 8 0) x) 72 (byte 8 24) 73 (dpb (ldb (byte 8 8) x) 74 (byte 8 16) 75 (dpb (ldb (byte 8 16) x) 76 (byte 8 8) 77 (ldb (byte 8 24) x))))) 71 (%swap-u32 x)) 78 72 (defun %bswap16 (x) 79 73 (declare (type (unsigned-byte 16) x)) 80 (dpb (ldb (byte 8 0) x) 81 (byte 8 8) 82 (ldb (byte 8 8) x))) 74 (%swap-u16 x)) 83 75 (defmacro HTONL (x) `(%bswap32 ,x)) 84 76 (defmacro HTONS (x) `(%bswap16 ,x)) … … 294 286 295 287 ;;; An active TCP socket is an honest-to-goodness stream. 296 (defclass tcp-stream (tcp-socket fd-stream 297 buffered-binary-io-stream-mixin 298 buffered-character-io-stream-mixin) 288 (defclass tcp-stream (tcp-socket) 299 289 ()) 300 290 291 (defclass fundamental-tcp-stream (tcp-stream 292 fd-stream 293 buffered-binary-io-stream-mixin 294 buffered-character-io-stream-mixin) 295 ()) 296 297 (make-built-in-class 'basic-tcp-stream 298 'tcp-stream 299 'basic-binary-io-stream 300 'basic-character-io-stream) 301 301 302 (defgeneric socket-connect (stream) 302 (:documentation303 (:documentation 303 304 "Return :active for tcp-stream, :passive for listener-socket, and NIL 304 305 for udp-socket")) … … 326 327 ;; Yes, in general. There is. 327 328 (assert (and in-p out-p) () "Non-bidirectional tcp stream?") 328 'tcp-stream) 329 'fundamental-tcp-stream) 330 331 (defmethod map-to-basic-stream-class-name ((name (eql 'tcp-stream))) 332 'basic-tcp-stream) 333 334 (defmethod select-stream-class ((s (eql 'basic-tcp-stream)) in-p out-p char-p) 335 (declare (ignore char-p)) 336 (assert (and in-p out-p) () "Non-bidirectional tcp stream?") 337 'basic-tcp-stream) 329 338 330 339 ;;; A FILE-SOCKET-STREAM is also honest. To goodness. 331 (defclass file-socket-stream (stream-file-socket 332 fd-stream 333 buffered-binary-io-stream-mixin 334 buffered-character-io-stream-mixin) 340 (defclass file-socket-stream (stream-file-socket) 335 341 ()) 342 343 (defclass fundamental-file-socket-stream (file-socket-stream 344 fd-stream 345 buffered-binary-io-stream-mixin 346 buffered-character-io-stream-mixin) 347 ()) 348 349 (make-built-in-class 'basic-file-socket-stream 350 'file-socket-stream 351 'basic-binary-io-stream 352 'basic-character-io-stream) 353 354 336 355 337 356 (defmethod select-stream-class ((class file-socket-stream) in-p out-p char-p) 338 357 (declare (ignore char-p)) ; TODO: is there any real reason to care about this? 339 358 (assert (and in-p out-p) () "Non-bidirectional tcp stream?") 340 'f ile-socket-stream)359 'fundamental-file-socket-stream) 341 360 342 361 (defclass unconnected-socket (socket) … … 572 591 keepalive reuse-address nodelay broadcast linger 573 592 local-port local-host backlog class out-of-band-inline 574 local-filename remote-filename sharing )593 local-filename remote-filename sharing basic) 575 594 "Create and return a new socket." 576 595 (declare (dynamic-extent keys)) … … 578 597 keepalive reuse-address nodelay broadcast linger 579 598 local-port local-host backlog class out-of-band-inline 580 local-filename remote-filename sharing ))599 local-filename remote-filename sharing basic)) 581 600 (ecase address-family 582 601 ((:file) (apply #'make-file-socket keys)) … … 654 673 format 655 674 (class 'tcp-stream) 675 (basic t) 656 676 &allow-other-keys) 657 677 (inet-connect fd 658 678 (host-as-inet-host remote-host) 659 679 (port-as-inet-port remote-port "tcp")) 660 (make-tcp-stream fd :format format :eol eol :class class ))680 (make-tcp-stream fd :format format :eol eol :class class :basic basic)) 661 681 662 682 (defun make-file-stream-socket (fd &key remote-filename … … 664 684 format 665 685 (class 'file-socket-stream) 686 (basic t) 666 687 &allow-other-keys) 667 688 (file-socket-connect fd remote-filename) 668 (make-file-socket-stream fd :format format :eol eol :class class ))669 670 671 (defun make-tcp-stream (fd &key format eol (class 'tcp-stream) sharing &allow-other-keys)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) 672 693 (declare (ignore eol)) ;??? 673 694 (let ((element-type (ecase format … … 681 702 :element-type element-type 682 703 :sharing sharing 683 :character-p t))) 684 685 (defun make-file-socket-stream (fd &key format eol (class 'file-socket-stream) sharing &allow-other-keys) 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) 686 708 (declare (ignore eol)) ;??? 687 709 (let ((element-type (ecase format … … 695 717 :element-type element-type 696 718 :sharing sharing 697 :character-p t))) 719 :character-p t 720 :basic basic))) 698 721 699 722 (defun make-tcp-listener-socket (fd &rest keys &key backlog &allow-other-keys)
Note:
See TracChangeset
for help on using the changeset viewer.
