summaryrefslogtreecommitdiff
path: root/src/event
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-03 20:44:07 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-03 21:03:02 -0400
commit617172576b95bbb935a75f98a98787da5a4e9a9d (patch)
treeae72fea2e81d023960c93d4efbf7e137c3705c48 /src/event
parent0a5599c60d20ccc2223779eeba5dc91a95ea0fe5 (diff)
List messages per channel.
Diffstat (limited to 'src/event')
-rw-r--r--src/event/app.rs8
-rw-r--r--src/event/mod.rs2
-rw-r--r--src/event/sequence.rs7
3 files changed, 11 insertions, 6 deletions
diff --git a/src/event/app.rs b/src/event/app.rs
index 32f0a97..d664ec7 100644
--- a/src/event/app.rs
+++ b/src/event/app.rs
@@ -36,7 +36,7 @@ impl<'a> Events<'a> {
let channel_events = channels
.iter()
.map(channel::History::events)
- .kmerge_by(|a, b| a.instant.sequence < b.instant.sequence)
+ .kmerge_by(Sequence::merge)
.filter(Sequence::after(resume_at))
.map(Event::from);
@@ -44,14 +44,12 @@ impl<'a> Events<'a> {
let message_events = messages
.iter()
.map(message::History::events)
- .kmerge_by(|a, b| a.instant.sequence < b.instant.sequence)
+ .kmerge_by(Sequence::merge)
.filter(Sequence::after(resume_at))
.map(Event::from);
let replay_events = channel_events
- .merge_by(message_events, |a, b| {
- a.instant.sequence < b.instant.sequence
- })
+ .merge_by(message_events, Sequence::merge)
.collect::<Vec<_>>();
let resume_live_at = replay_events.last().map(Sequenced::sequence);
diff --git a/src/event/mod.rs b/src/event/mod.rs
index 1503b77..1349fe6 100644
--- a/src/event/mod.rs
+++ b/src/event/mod.rs
@@ -38,7 +38,7 @@ impl From<channel::Event> for Event {
impl From<message::Event> for Event {
fn from(event: message::Event) -> Self {
Self {
- instant: event.instant,
+ instant: event.instant(),
kind: event.kind.into(),
}
}
diff --git a/src/event/sequence.rs b/src/event/sequence.rs
index c566156..fbe3711 100644
--- a/src/event/sequence.rs
+++ b/src/event/sequence.rs
@@ -59,6 +59,13 @@ impl Sequence {
{
move |event| resume_point <= event.sequence()
}
+
+ pub fn merge<E>(a: &E, b: &E) -> bool
+ where
+ E: Sequenced,
+ {
+ a.sequence() < b.sequence()
+ }
}
pub trait Sequenced {