Nats + Redis PubSub cluster updates replacing Gossip protocol
This commit is contained in:
@@ -116,11 +116,11 @@ impl EventSourceHandler for Server {
|
||||
loop {
|
||||
match tokio::time::timeout(timeout, change_rx.recv()).await {
|
||||
Ok(Some(state_change)) => {
|
||||
for (type_state, change_id) in state_change.types {
|
||||
for type_state in state_change.types {
|
||||
response
|
||||
.changed
|
||||
.get_mut_or_insert(state_change.account_id.into())
|
||||
.set(type_state, change_id.into());
|
||||
.set(type_state, state_change.change_id.into());
|
||||
}
|
||||
}
|
||||
Ok(None) => {
|
||||
|
||||
@@ -1040,10 +1040,10 @@ impl EmailSet for Server {
|
||||
if response.updated.is_empty() && response.destroyed.is_empty() {
|
||||
// Message ingest does not broadcast state changes
|
||||
self.broadcast_state_change(
|
||||
StateChange::new(account_id)
|
||||
.with_change(DataType::Email, change_id)
|
||||
.with_change(DataType::Mailbox, change_id)
|
||||
.with_change(DataType::Thread, change_id),
|
||||
StateChange::new(account_id, change_id)
|
||||
.with_change(DataType::Email)
|
||||
.with_change(DataType::Mailbox)
|
||||
.with_change(DataType::Thread),
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
@@ -178,18 +178,15 @@ impl WebSocketHandler for Server {
|
||||
}
|
||||
state_change = change_rx.recv() => {
|
||||
if let Some(state_change) = state_change {
|
||||
if !change_types.is_empty() && state_change
|
||||
.types
|
||||
.iter()
|
||||
.any(|(t, _)| change_types.contains(*t))
|
||||
{
|
||||
for (type_state, change_id) in state_change.types {
|
||||
changes
|
||||
.changed
|
||||
.get_mut_or_insert(state_change.account_id.into())
|
||||
.set(type_state, change_id.into());
|
||||
}
|
||||
}
|
||||
let mut types = state_change.types;
|
||||
types.intersection(&change_types);
|
||||
|
||||
for type_state in types {
|
||||
changes
|
||||
.changed
|
||||
.get_mut_or_insert(state_change.account_id.into())
|
||||
.set(type_state, state_change.change_id.into());
|
||||
}
|
||||
} else {
|
||||
trc::event!(
|
||||
Jmap(JmapEvent::WebsocketStop),
|
||||
|
||||
Reference in New Issue
Block a user