Author: psmith Date: Sun Jan 28 21:35:58 2007 New Revision: 55
Modified: branches/home/psmith/restructure/run-yarpc-client.lisp branches/home/psmith/restructure/run-yarpc.lisp branches/home/psmith/restructure/src/buffer/buffer.lisp branches/home/psmith/restructure/src/buffer/nio-buffer-package.lisp branches/home/psmith/restructure/src/protocol/yarpc/yarpc-packet-factory.lisp Log: large packet support first working version
Modified: branches/home/psmith/restructure/run-yarpc-client.lisp ============================================================================== --- branches/home/psmith/restructure/run-yarpc-client.lisp (original) +++ branches/home/psmith/restructure/run-yarpc-client.lisp Sun Jan 28 21:35:58 2007 @@ -1,4 +1,4 @@ -;(push :nio-debug *features*) +(push :nio-debug *features*) (require :asdf) (require :nio-yarpc)
Modified: branches/home/psmith/restructure/run-yarpc.lisp ============================================================================== --- branches/home/psmith/restructure/run-yarpc.lisp (original) +++ branches/home/psmith/restructure/run-yarpc.lisp Sun Jan 28 21:35:58 2007 @@ -1,6 +1,6 @@ ;Runs a multithreaded system with an IO thread dealing with IO only and a 'job' thread taking and executing jobs
-;(push :nio-debug *features*) +(push :nio-debug *features*) (require :asdf) (require :nio-yarpc)
Modified: branches/home/psmith/restructure/src/buffer/buffer.lisp ============================================================================== --- branches/home/psmith/restructure/src/buffer/buffer.lisp (original) +++ branches/home/psmith/restructure/src/buffer/buffer.lisp Sun Jan 28 21:35:58 2007 @@ -175,14 +175,25 @@ (inc-position bb 4) val))
+;write an 8 bit value and up date position in buffer (defmethod bytebuffer-write-8 ((bb byte-buffer) value) (setf (cffi:mem-ref (buffer-buf bb) :unsigned-char (buffer-position bb)) value) (inc-position bb 1))
+;write a 32 bit value and up date position in buffer (defmethod bytebuffer-write-32 ((bb byte-buffer) value) (setf (cffi:mem-ref (buffer-buf bb) :unsigned-int (buffer-position bb)) value) (inc-position bb 4))
+;insert an 8 bit value +(defmethod bytebuffer-insert-8 ((bb byte-buffer) value byte-position) + (setf (cffi:mem-ref (buffer-buf bb) :unsigned-char byte-position) value)) + +;insert a 32 bit value +(defmethod bytebuffer-insert-32 ((bb byte-buffer) value byte-position) + (setf (cffi:mem-ref (buffer-buf bb) :unsigned-int byte-position) value)) + +
;; Write bytes from vector vec to bytebuffer
Modified: branches/home/psmith/restructure/src/buffer/nio-buffer-package.lisp ============================================================================== --- branches/home/psmith/restructure/src/buffer/nio-buffer-package.lisp (original) +++ branches/home/psmith/restructure/src/buffer/nio-buffer-package.lisp Sun Jan 28 21:35:58 2007 @@ -29,6 +29,7 @@ (:export byte-buffer free-buffer remaining inc-position get-string buffer-buf bytebuffer-write-vector bytebuffer-write-string - bytebuffer-read-vector bytebuffer-read-string bytebuffer-read-8 bytebuffer-read-32 + bytebuffer-read-vector bytebuffer-read-string + bytebuffer-read-8 bytebuffer-read-32 bytebuffer-write-8 bytebuffer-write-32 bytebuffer-insert-8 bytebuffer-insert-32 flip unflip clear buffer-position copy-buffer buffer-capacity ))
Modified: branches/home/psmith/restructure/src/protocol/yarpc/yarpc-packet-factory.lisp ============================================================================== --- branches/home/psmith/restructure/src/protocol/yarpc/yarpc-packet-factory.lisp (original) +++ branches/home/psmith/restructure/src/protocol/yarpc/yarpc-packet-factory.lisp Sun Jan 28 21:35:58 2007 @@ -35,8 +35,14 @@ (defun yarpc-packet-factory () (make-instance 'yarpc-packet-factory))
-(defconstant CALL-METHOD-PACKET-ID #x0) -(defconstant METHOD-RESPONSE-PACKET-ID #x1) +(defconstant +CALL-METHOD-PACKET-ID+ #x0) +(defconstant +METHOD-RESPONSE-PACKET-ID+ #x1) + +(defconstant +PACKET-ID-SIZE+ 1) +(defconstant +PACKET-LENGTH-SIZE+ 4) + +(defconstant +yarpc-packet-header-size+ + (+ +PACKET-ID-SIZE+ +PACKET-LENGTH-SIZE+))
(defmethod get-packet ((pf yarpc-packet-factory) buf) (flip buf) @@ -56,13 +62,6 @@
(defclass call-method-packet (packet)((call-string :initarg :call-string :accessor call-string))) - -(defconstant +PACKET-ID-SIZE+ 1) -(defconstant +PACKET-LENGTH-SIZE+ 4) - -(defconstant +yarpc-packet-header-size+ - (+ +PACKET-ID-SIZE+ +PACKET-LENGTH-SIZE+)) - (defun call-method-packet (call-string) (make-instance 'call-method-packet :call-string call-string))
@@ -70,11 +69,13 @@ (format stream "#<CALL-METHOD-PACKET ~A >" (call-string packet)))
(defmethod write-bytes((packet call-method-packet) buf) -#+nio-debug (format-log t "yarpc-packet-factory:write-bytes - writing ~A to ~A~%" packet buf) - (nio-buffer:bytebuffer-write-vector buf #(#x0)) + #+nio-debug (format-log t "yarpc-packet-factory:write-bytes(call-method-packet) - writing ~%~A to ~%~A~%" packet buf) + (nio-buffer:bytebuffer-write-8 buf +CALL-METHOD-PACKET-ID+) + (nio-buffer:bytebuffer-write-32 buf 0) ; come back and write length later (nio-buffer:bytebuffer-write-string buf (call-string packet)) -#+nio-debug (format-log t "yarpc-packet-factory:write-bytes - written ~A~%" buf) -) + (nio-buffer:bytebuffer-insert-32 buf (buffer-position buf) 1) + #+nio-debug (format-log t "yarpc-packet-factory:write-bytes(call-method-packet) - written ~%~A ~%" buf) + )
(defclass method-response-packet (packet) @@ -89,7 +90,9 @@
(defmethod write-bytes((packet method-response-packet) buf) #+nio-debug (format-log t "yarpc-packet-factory:write-bytes - writing ~A to ~A~%" packet buf) - (nio-buffer:bytebuffer-write-vector buf #(#x1)) + (nio-buffer:bytebuffer-write-8 buf +METHOD-RESPONSE-PACKET-ID+) + (nio-buffer:bytebuffer-write-32 buf 0) ; come back and write length later (nio-buffer:bytebuffer-write-string buf (write-to-string (response packet))) + (nio-buffer:bytebuffer-insert-32 buf (buffer-position buf) 1) #+nio-debug (format-log t "yarpc-packet-factory:write-bytes - written ~A~%" buf) )