Revision: 44186 http://brlcad.svn.sourceforge.net/brlcad/?rev=44186&view=rev Author: erikgreenwald Date: 2011-04-04 17:56:01 +0000 (Mon, 04 Apr 2011)
Log Message: ----------- fix off by one weirdness in chunk request 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 17:03:41 UTC (rev 44185) +++ geomcore/trunk/src/interfaces/cl/gsclient.lisp 2011-04-04 17:56:01 UTC (rev 44186) @@ -3,7 +3,7 @@ (defpackage :gsclient (:use :cl :sb-unix) - (:export :login :logout :ping :getgeom)) + (:export :login :logout :ping :getgeom :getgeomfile)) (in-package :gsclient) @@ -14,7 +14,7 @@ ;; this should probably check to make sure things are ok (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))) + (loop for i from 1 to (length (gsnet::manifest (gsnet:readmsg s))) do (write-sequence (gsnet::chunk (gsnet:readmsg s)) st :end (- (length ch) 1)))) (defun getgeomfile (s file uri &key (bot '())) (with-open-file (out file :element-type '(unsigned-byte 8) :direction :output) Modified: geomcore/trunk/src/interfaces/cl/gsnet.lisp =================================================================== --- geomcore/trunk/src/interfaces/cl/gsnet.lisp 2011-04-04 17:03:41 UTC (rev 44185) +++ geomcore/trunk/src/interfaces/cl/gsnet.lisp 2011-04-04 17:56:01 UTC (rev 44186) @@ -94,9 +94,9 @@ ((= 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)))) - (read-sequence arr (strm s)) - arr))) + (let ((arr (make-array (+ (readuint32 (strm s) 1) :element-type '(unsigned-byte 8)))) + (read-sequence arr (strm s)) + arr)))) ((= type +gsnsr+) (make-instance 'loginmsg :username (readgsstring (strm s)) :password (readgsstring (strm s)))) (t (format t "Unknown type! ~x~%" type)))) '())) @@ -165,4 +165,4 @@ (defclass geomchunkmsg (message) ((chunk :accessor chunk :initarg :chunk))) (defmethod writemsg :before (s (m geomchunkmsg)) (setf (msgtype m) +gsgc+) (setf (len m) (length (chunk m)))) -(defmethod writemsg :after (s (m geomchunkmsg)) (writeuint32 (strm s) (length (chunk m))) (write-sequence (chunk m) (strm s))) +(defmethod writemsg :after (s (m geomchunkmsg)) (writeuint32 (strm s) (- (length (chunk m)) 1)) (write-sequence (chunk m) (strm s))) Modified: geomcore/trunk/src/interfaces/cl/gsserver.lisp =================================================================== --- geomcore/trunk/src/interfaces/cl/gsserver.lisp 2011-04-04 17:03:41 UTC (rev 44185) +++ geomcore/trunk/src/interfaces/cl/gsserver.lisp 2011-04-04 17:56:01 UTC (rev 44186) @@ -17,8 +17,8 @@ (defun send-geom (s reuuid filename) (gsnet:writemsg s (make-instance 'gsnet:geommanifestmsg :manifest (list filename))) - (with-open-file (stream (concatenate +dbdir+ filename) :element-type '(unsigned-byte 8) :if-does-not-exist :error) - (let ((arr (make-array (file-length stream) :element-type '(unsigned-byte 8)))) + (with-open-file (stream (concatenate 'string +dbdir+ filename) :element-type '(unsigned-byte 8) :if-does-not-exist :error) + (let ((arr (make-array (+ (file-length stream) 1) :element-type '(unsigned-byte 8)))) (read-sequence arr stream) (gsnet:writemsg s (make-instance 'gsnet:geomchunkmsg :chunk arr :reuuid reuuid))))) 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