blob: bc11db6d0fe9a9372cea60a41920bce1b8ad530d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
(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))
|