Revision: 44183
          http://brlcad.svn.sourceforge.net/brlcad/?rev=44183&view=rev
Author:   erikgreenwald
Date:     2011-04-04 14:52:00 +0000 (Mon, 04 Apr 2011)

Log Message:
-----------
add geombotreqmsg

Modified Paths:
--------------
    geomcore/trunk/src/interfaces/cl/gsclient.lisp
    geomcore/trunk/src/interfaces/cl/gsnet.lisp
    geomcore/trunk/src/interfaces/cl/gsserver.lisp

Modified: geomcore/trunk/src/interfaces/cl/gsclient.lisp
===================================================================
--- geomcore/trunk/src/interfaces/cl/gsclient.lisp      2011-04-04 14:45:12 UTC 
(rev 44182)
+++ geomcore/trunk/src/interfaces/cl/gsclient.lisp      2011-04-04 14:52:00 UTC 
(rev 44183)
@@ -12,13 +12,13 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;; this should probably check to make sure things are ok
-(defun getgeom (s st uri)
-  (gsnet:writemsg s (make-instance 'gsnet:geomreqmsg :uri uri))
+(defun getgeom (s st uri &key (bot '()))
+  (gsnet:writemsg s (make-instance (if bot 'gsnet:geombotreqmsg 
'gsnet:geomreqmsg) :uri uri))
   (loop for i from 0 to (length (gsnet::manifest (gsnet:readmsg s))) do 
(write-sequence (gsnet::chunk (gsnet:readmsg s)) st)))
 
-(defun getgeomfile (s file uri)
+(defun getgeomfile (s file uri &key (bot '()))
   (with-open-file (out file :element-type '(unsigned-byte 8) :direction 
:output)
-    (getgeom s out uri)))
+    (getgeom s out uri :bot bot)))
 
 (defun ping (s)
   (gsnet:writemsg s (make-instance 'gsnet:pingmsg))

Modified: geomcore/trunk/src/interfaces/cl/gsnet.lisp
===================================================================
--- geomcore/trunk/src/interfaces/cl/gsnet.lisp 2011-04-04 14:45:12 UTC (rev 
44182)
+++ geomcore/trunk/src/interfaces/cl/gsnet.lisp 2011-04-04 14:52:00 UTC (rev 
44183)
@@ -4,7 +4,7 @@
 (defpackage :gsnet
   (:use :cl :sb-unix)
   (:export :connect :writemsg :readmsg
-          :session :message :pingmsg :pongmsg :nodenamemsg :loginmsg 
:logoutmsg :rualivemsg :imalivemsg :okmsg :failmsg :geomreqmsg :geommanifestmsg 
:geomchunkmsg
+          :session :message :pingmsg :pongmsg :nodenamemsg :loginmsg 
:logoutmsg :rualivemsg :imalivemsg :okmsg :failmsg :geomreqmsg :geombotreqmsg 
:geommanifestmsg :geomchunkmsg
           :manifest :remotenode :sessionuuid :socket :strm
           :usec))
 
@@ -28,6 +28,7 @@
 (defconstant +gsnsr+     #x0300) ; New Session Request
 (defconstant +gsinfo+    #x0305) ; Session Information
 (defconstant +gsgr+      #x0400) ; Geometry Request
+(defconstant +gsgbr+     #x0401) ; Geometry BoT Request
 (defconstant +gsgm+      #x0405) ; Geometry Manifest
 (defconstant +gsgc+      #x0410) ; Geometry Chunk
 
@@ -90,6 +91,7 @@
          ((= type +gsrualive+) (writemsg s (make-instance 'imalivemsg)) t) ; 
automatically respond to rualive 
          ((= type +gsimalive+) (make-instance 'imalivemsg))
          ((= type +gsgr+) (make-instance 'geomreqmsg :uri (readgsstring (strm 
s))))
+         ((= type +gsgbr+) (make-instance 'geombotreqmsg :uri (readgsstring 
(strm s))))
          ((= type +gsgm+) (make-instance 'geommanifestmsg :manifest (loop for 
i from 1 to (readuint32 (strm s)) collect (readgsstring (strm s)))))
          ((= type +gsgc+) (make-instance 'geomchunkmsg :chunk 
                                  (let ((arr (make-array (+ (readuint32 (strm 
s)) 1) :element-type '(unsigned-byte 8))))
@@ -153,6 +155,10 @@
 (defmethod writemsg :before (s (m geomreqmsg)) (setf (msgtype m) +gsgr+) (setf 
(len m) (+ (length (uri m)) 4)))
 (defmethod writemsg :after (s (m geomreqmsg)) (writegsstring (strm s) (uri m)))
 
+(defclass geombotreqmsg (message) ((uri :accessor uri :initarg :uri :initform 
"")))
+(defmethod writemsg :before (s (m geombotreqmsg)) (setf (msgtype m) +gsgr+) 
(setf (len m) (+ (length (uri m)) 4)))
+(defmethod writemsg :after (s (m geombotreqmsg)) (writegsstring (strm s) (uri 
m)))
+
 (defclass geommanifestmsg (message) ((manifest :accessor manifest :initarg 
:manifest)))
 (defmethod writemsg :before (s (m geommanifestmsg)) (setf (msgtype m) +gsgm+) 
(setf (len m) (apply #'+ 4 (mapcar (lambda (x) (+ (length x) 4)) (manifest 
m)))))
 (defmethod writemsg :after (s (m geommanifestmsg)) (writeuint32 (strm s) 
(length (manifest m))) (loop for i in (manifest m) do (writegsstring (strm s) 
i)))

Modified: geomcore/trunk/src/interfaces/cl/gsserver.lisp
===================================================================
--- geomcore/trunk/src/interfaces/cl/gsserver.lisp      2011-04-04 14:45:12 UTC 
(rev 44182)
+++ geomcore/trunk/src/interfaces/cl/gsserver.lisp      2011-04-04 14:52:00 UTC 
(rev 44183)
@@ -21,6 +21,9 @@
       (read-sequence arr stream)
       (gsnet:writemsg s (make-instance 'gsnet:geomchunkmsg :chunk arr :reuuid 
reuuid)))))
 
+(defun send-bot-geom (s reuuid filename)
+  (gsnet:writemsg s (make-instance 'gsnet:failmsg)))
+
 (defun handle-connection (st)
   (let ((s (make-instance 'gsnet:session :stream st)))
 
@@ -40,6 +43,7 @@
         (let ((m (gsnet:readmsg s)))
           (cond
             ((equalp (type-of m) 'gsnet:geomreqmsg) (send-geom s (gsnet::uuid 
m) (gsnet::uri m)))
+            ((equalp (type-of m) 'gsnet:geombotreqmsg) (send-bot-geom s 
(gsnet::uuid m) (gsnet::uri m)))
             ((equalp m t) '())
             ((equalp m '()) (return-from handle-connection))
             (t (format t "Unhandled thing ~a~%" (type-of m))))))))


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself; 
WebMatrix provides all the features you need to develop and 
publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to