(require 'cxml) (require 'usocket) (require 'cl-xmlspam) ;; (klacks:with-open-source (s (cxml:make-source #p"s2.xml")) (loop for key = (klacks:peek s) while key do (case key (:start-element (format t "~A {" (klacks:current-qname s))) (:end-element (format t "}"))) (klacks:consume s))) ;; (klacks:with-open-source (s (cxml:make-source (usocket:socket-stream (usocket:socket-connect "victoria.tug.nordu.net" 50001 :element-type '(unsigned-byte 8))) :buffering nil)) (loop for key = (klacks:peek-next s) while key do (case key (:start-document (format t " ")) (:start-element (format t "~A {" (klacks:current-qname s))) (:end-element (format t "}")) (:end-document (format t "~%"))) (klacks:consume s))) ;; (use-package 'xspam) (defparameter *ns* '((urn . "urn:ietf:params:xml:ns:xfb-0.1"))) (defun get-entry-xspam (sock) (with-xspam-source (make-xspam-source sock :buffering nil) (optional (element :bgp_message ;;|bgp_message| (text (format t "~A~%" _)))))) ;; (defun klacks-it (arr) (let ((s (cxml:make-source arr))) (loop for key = (klacks:peek s) while key do (case key ;(:start-document (format t "*** start *** ")) ;(:end-document (format t "*** end ***~%")) (:start-element (format t "~A {" (klacks:current-qname s))) (:end-element (format t "}~%")) (:characters (format t (klacks:current-characters s)))) (klacks:consume s)))) (defun klacks-it2 (arr) (let ((s (cxml:make-source arr))) (do ((key (klacks:peek s) (klacks:peek s))) ((null key)) (case key ;(:start-document (format t "*** start *** ")) ;(:end-document (format t "*** end ***~%")) (:start-element (format t "~A {" (klacks:current-qname s))) (:end-element (format t "}~%")) (:characters (format t (klacks:current-characters s)))) (klacks:consume s)))) ;; (let ((sock (usocket:socket-connect "victoria.tug.nordu.net" 50001 :element-type '(unsigned-byte 8)))) (loop for i from 1 to 5 do (format t "~A: " i) (f (usocket:socket-stream sock)) (format t "~%")) (format t "Closing socket.~%") (usocket:socket-close sock)) ;;;; (defun play () (let ((reader (new-reader "victoria.tug" 50001)) (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))) ;; (next-xml-blurb (new-reader "victoria.tug.nordu.net" 50001) "BGP_MESSAGE") ;;;; db ;; SQL "select * from bgp_message where timestamp != 0 order by id desc limit 3;" ;; postmodern, lower level ;; http://common-lisp.net/project/postmodern/postmodern.html#querying (query "select count(*) from bgp_message" :single) (doquery (:select 'timestamp 'prefix 'label :from 'bgp-message) (ts pref lbl) (format t "~A ~A ~A~%" ts pref lbl)) ;; postmodern, higher level ;; http://common-lisp.net/project/postmodern/postmodern.html#tabledef (dolist (m (select-dao 'bgp-message (:= 'label "NANN"))) (format t "~A ~A ~A~%" (timestamp m) (prefix m) (label m))) (length (select-dao 'bgp-message))