summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordberg.se>2009-07-27 13:43:26 +0200
committerLinus Nordberg <linus@nordberg.se>2009-07-27 13:43:26 +0200
commit8f473a2aea856759b0cf9b5fbc9bd6b59df3488f (patch)
tree3c2e721a09768ea472eb56b541da4e8a75e69bd5
parentf06dd94317cb415d036e20cd1734aa07ef391a37 (diff)
* src/playground.lisp: Add fun for reading from file instead of
network socket. Add small pattern matching example (fare-matcher).
-rw-r--r--src/playground.lisp37
1 files changed, 35 insertions, 2 deletions
diff --git a/src/playground.lisp b/src/playground.lisp
index bc11db6..4936cd0 100644
--- a/src/playground.lisp
+++ b/src/playground.lisp
@@ -78,17 +78,50 @@
(usocket:socket-close sock))
;;;;
-(defun play ()
- (let ((reader (new-reader "victoria.tug" 50001))
+(defun read-stream-into-list (host port)
+ (let ((reader (new-reader host port))
(xmls-builder (cxml-xmls:make-xmls-builder)))
(do ((e (next-xml-blurb reader "BGP_MESSAGE")
(next-xml-blurb reader "BGP_MESSAGE")))
((null e))
(print (cxml:parse e xmls-builder)))
(close-reader)))
+
+;;
+(let ((s nil))
+ (defun file-reader (fn)
+ (when s
+ (close s))
+ (setf s (open fn :element-type '(unsigned-byte 8)))
+ (lambda (n)
+ (read-byte s nil)))
+ (defun close-file ()
+ (close s)))
+;;
+(defun read-file-into-list (fn)
+ (let ((reader (file-reader fn))
+ (xmls-builder (cxml-xmls:make-xmls-builder)))
+ (do ((e (next-xml-blurb reader "BGP_MESSAGE")
+ (next-xml-blurb reader "BGP_MESSAGE")))
+ ((null e))
+ (print (cxml:parse e xmls-builder)))
+ (close-file)))
;;
(next-xml-blurb (new-reader "victoria.tug.nordu.net" 50001) "BGP_MESSAGE")
+;;;; Pattern matching using fare-matcher.
+(require :fare-matcher)
+(let ((expr '(foo bar)))
+ (letm
+ (list a b) ;pattern
+ expr
+ (list a b)))
+(let ((expr '(foo kaka bar)))
+ (match
+ expr
+ ((list a b) (list 'plain a b))
+ ((list a 'kaka b) (list 'cookie a b))))
+
;;;; db
;; SQL
"select * from bgp_message where timestamp != 0 order by id desc limit 3;"