[usocket-cvs] r201 - usocket/trunk

ehuelsmann at common-lisp.net ehuelsmann at common-lisp.net
Wed Feb 28 19:26:09 UTC 2007


Author: ehuelsmann
Date: Wed Feb 28 14:26:08 2007
New Revision: 201

Modified:
   usocket/trunk/package.lisp
   usocket/trunk/usocket.lisp
Log:
Implement 2 helper macros from an
idea by Harold Lee (harold at hotelling dot net) [my implementation.

Modified: usocket/trunk/package.lisp
==============================================================================
--- usocket/trunk/package.lisp	(original)
+++ usocket/trunk/package.lisp	Wed Feb 28 14:26:08 2007
@@ -21,8 +21,10 @@
              #:get-local-name
              #:get-peer-name
 
-             #:with-connected-socket ; macros
+             #:with-connected-socket ; convenience macros
              #:with-server-socket
+             #:with-client-socket
+             #:with-socket-listener
 
              #:usocket ; socket object and accessors
              #:stream-usocket

Modified: usocket/trunk/usocket.lisp
==============================================================================
--- usocket/trunk/usocket.lisp	(original)
+++ usocket/trunk/usocket.lisp	Wed Feb 28 14:26:08 2007
@@ -117,6 +117,17 @@
        (when ,var
          (socket-close ,var)))))
 
+(defmacro with-client-socket ((socket-var stream-var &rest socket-connect-args)
+                              &body body)
+  "Bind the socket resulting from a call to `socket-connect' with
+the arguments `socket-connect-args' to `socket-var' and if `stream-var' is
+non-nil, bind the associated socket stream to it."
+  `(with-connected-socket (,socket-var (socket-connect , at socket-connect-args))
+       ,(if (null stream-var)
+           `(progn , at body)
+          `(let ((,stream-var (socket-stream ,socket-var)))
+             , at body))))
+
 (defmacro with-server-socket ((var server-socket) &body body)
   "Bind `server-socket' to `var', ensuring socket destruction on exit.
 
@@ -126,6 +137,14 @@
   `(with-connected-socket (var server-socket)
       , at body))
 
+(defmacro with-socket-listener ((socket-var &rest socket-listen-args)
+                                &body body)
+  "Bind the socket resulting from a call to `socket-listen' with arguments
+`socket-listen-args' to `socket-var'."
+  `(with-server-socket (,socket-var (socket-listen , at socket-listen-args))
+      , at body))
+
+
 ;;
 ;; IP(v4) utility functions
 ;;



More information about the usocket-cvs mailing list