[nick "foo"]
[uri "bar"]
[actual (str->msg nick uri (string-append ts tab text))]
- [expected (Msg 1605756129 ts nick uri text)])
+ [expected (Msg 1605756129 ts nick uri text '())])
(check-equal?
(Msg-ts-epoch actual)
(Msg-ts-epoch expected)
; TODO No need for map - can just iter
(void (concurrent-filter-map num-workers peer-download peers)))
+(: uniq (∀ (α) (-> (Listof α) (Listof α))))
(define (uniq xs)
(set->list (list->set xs)))
(map string->path paths)])]
[peers (append* (map file->peers paths))])
(log-info "Read-in ~a peers." (length peers))
- peers))
+ (uniq peers)))
(: log-writer-stop (-> Thread Void))
(define (log-writer-stop log-writer)
(exit 1)))]
[(or "r" "read")
(let ([out-format 'multi-line]
- [order 'old->new])
+ [order 'old->new]
+ [ts-min #f]
+ [ts-max #f])
(command-line
#:program
"tt read"
[("-r" "--rev")
"Reverse displayed timeline order."
(set! order 'new->old)]
+ [("-m" "--min")
+ m "Earliest time to display (ignore anything before it)."
+ (set! ts-min (rfc3339->epoch m))]
+ [("-x" "--max")
+ x "Latest time to display (ignore anything after it)."
+ (set! ts-max (rfc3339->epoch x))]
#:once-any
[("-s" "--short")
"Short output format"
(let* ([peers
(paths->peers file-paths)]
[timeline
- (timeline-sort (peers->timeline peers) order)])
+ (timeline-sort (peers->timeline peers) order)]
+ [timeline
+ (filter (λ (m) (and (if ts-min (>= (Msg-ts-epoch m)
+ ts-min)
+ #t)
+ (if ts-max (<= (Msg-ts-epoch m)
+ ts-max)
+ #t)))
+ timeline)])
(timeline-print out-format timeline))))]
[(or "c" "crawl")
(command-line
#:program
"tt crawl"
#:args file-paths
- (let* ([peers-all-file
+ (let* ([peers-sort
+ (λ (peers) (sort peers (match-lambda**
+ [((Peer n1 _) (Peer n2 _))
+ (string<? (if n1 n1 "")
+ (if n2 n2 ""))])))]
+ [peers-all-file
(build-path tt-home-dir "peers-all")]
[peers-mentioned-file
(build-path tt-home-dir "peers-mentioned")]
[peers-mentioned-prev
(file->peers peers-mentioned-file)]
[peers-mentioned
- (uniq (append peers-mentioned-prev
- peers-mentioned-curr))]
+ (peers-sort (uniq (append peers-mentioned-prev
+ peers-mentioned-curr)))]
[peers-all-prev
(file->peers peers-all-file)]
[peers-all
- (uniq (append peers
- peers-mentioned
- peers-all-prev))])
+ (list->set (append peers
+ peers-mentioned
+ peers-all-prev))]
+ [n-peers-discovered
+ (set-count (set-subtract peers-all
+ (list->set peers-all-prev)))]
+ [peers-all
+ (peers-sort (set->list peers-all))])
+ (log-info "Discovered ~a new peers." n-peers-discovered)
(peers->file peers-mentioned
peers-mentioned-file)
(peers->file peers-all