|
|
|
|
@ -9,40 +9,37 @@ Once the event has been scheduled, the user's homeserver is responsible for actu
|
|
|
|
|
time and then distributing as normal via federation.
|
|
|
|
|
|
|
|
|
|
<!-- TOC -->
|
|
|
|
|
|
|
|
|
|
- [MSC4140: Cancellable delayed events](#msc4140-cancellable-delayed-events)
|
|
|
|
|
- [Background and motivation](#background-and-motivation)
|
|
|
|
|
- [Proposal](#proposal)
|
|
|
|
|
- [Scheduling a delayed event](#scheduling-a-delayed-event)
|
|
|
|
|
- [Managing delayed events](#managing-delayed-events)
|
|
|
|
|
- [Getting delayed events](#getting-delayed-events)
|
|
|
|
|
- [Homeserver implementation details](#homeserver-implementation-details)
|
|
|
|
|
- [Power levels are evaluated at the point of sending](#power-levels-are-evaluated-at-the-point-of-sending)
|
|
|
|
|
- [Delayed events are cancelled by a more recent state event](#delayed-events-are-cancelled-by-a-more-recent-state-event)
|
|
|
|
|
- [Rate-limiting at the point of sending](#rate-limiting-at-the-point-of-sending)
|
|
|
|
|
- [Use case specific considerations](#use-case-specific-considerations)
|
|
|
|
|
- [MatrixRTC](#matrixrtc)
|
|
|
|
|
- [Background](#background)
|
|
|
|
|
- [How this MSC would be used for MatrixRTC](#how-this-msc-would-be-used-for-matrixrtc)
|
|
|
|
|
- [Self-destructing messages](#self-destructing-messages)
|
|
|
|
|
- [Potential issues](#potential-issues)
|
|
|
|
|
- [Alternatives](#alternatives)
|
|
|
|
|
- [Delegating futures](#delegating-futures)
|
|
|
|
|
- [Batch sending](#batch-sending)
|
|
|
|
|
- [Not reusing the send/state endpoint](#not-reusing-the-sendstate-endpoint)
|
|
|
|
|
- [Batch sending futures with custom endpoint](#batch-sending-futures-with-custom-endpoint)
|
|
|
|
|
- [Batch Response](#batch-response)
|
|
|
|
|
- [EventId template variable](#eventid-template-variable)
|
|
|
|
|
- [Allocating the event ID at the point of scheduling the send](#allocating-the-event-id-at-the-point-of-scheduling-the-send)
|
|
|
|
|
- [MSC4018 use client sync loop](#msc4018-use-client-sync-loop)
|
|
|
|
|
- [Federated delayed events](#federated-delayed-events)
|
|
|
|
|
- [MQTT style Last Will](#mqtt-style-last-will)
|
|
|
|
|
- [M_INVALID_PARAM instead of M_MAX_DELAY_EXCEEDED](#m_invalid_param-instead-of-m_max_delay_exceeded)
|
|
|
|
|
- [Naming](#naming)
|
|
|
|
|
- [Security considerations](#security-considerations)
|
|
|
|
|
- [Unstable prefix](#unstable-prefix)
|
|
|
|
|
- [Dependencies](#dependencies)
|
|
|
|
|
|
|
|
|
|
- [Background and motivation](#background-and-motivation)
|
|
|
|
|
- [Proposal](#proposal)
|
|
|
|
|
- [Scheduling a delayed event](#scheduling-a-delayed-event)
|
|
|
|
|
- [Managing delayed events](#managing-delayed-events)
|
|
|
|
|
- [Getting delayed events](#getting-delayed-events)
|
|
|
|
|
- [Homeserver implementation details](#homeserver-implementation-details)
|
|
|
|
|
- [Power levels are evaluated at the point of sending](#power-levels-are-evaluated-at-the-point-of-sending)
|
|
|
|
|
- [Delayed events are cancelled by a more recent state event](#delayed-events-are-cancelled-by-a-more-recent-state-event)
|
|
|
|
|
- [Rate-limiting at the point of sending](#rate-limiting-at-the-point-of-sending)
|
|
|
|
|
- [Use case specific considerations](#use-case-specific-considerations)
|
|
|
|
|
- [MatrixRTC](#matrixrtc)
|
|
|
|
|
- [Background](#background)
|
|
|
|
|
- [How this MSC would be used for MatrixRTC](#how-this-msc-would-be-used-for-matrixrtc)
|
|
|
|
|
- [Self-destructing messages](#self-destructing-messages)
|
|
|
|
|
- [Potential issues](#potential-issues)
|
|
|
|
|
- [Alternatives](#alternatives)
|
|
|
|
|
- [Delegating futures](#delegating-futures)
|
|
|
|
|
- [Batch sending](#batch-sending)
|
|
|
|
|
- [Not reusing the `send`/`state` endpoint](#not-reusing-the-sendstate-endpoint)
|
|
|
|
|
- [Batch sending futures with custom endpoint](#batch-sending-futures-with-custom-endpoint)
|
|
|
|
|
- [Batch Response](#batch-response)
|
|
|
|
|
- [EventId template variable](#eventid-template-variable)
|
|
|
|
|
- [Allocating the event ID at the point of scheduling the send](#allocating-the-event-id-at-the-point-of-scheduling-the-send)
|
|
|
|
|
- [MSC4018 (use client sync loop)](#msc4018-use-client-sync-loop)
|
|
|
|
|
- [Federated delayed events](#federated-delayed-events)
|
|
|
|
|
- [MQTT style Last Will](#mqtt-style-last-will)
|
|
|
|
|
- [`M_INVALID_PARAM` instead of `M_MAX_DELAY_EXCEEDED`](#m_invalid_param-instead-of-m_max_delay_exceeded)
|
|
|
|
|
- [Naming](#naming)
|
|
|
|
|
- [Security considerations](#security-considerations)
|
|
|
|
|
- [Unstable prefix](#unstable-prefix)
|
|
|
|
|
- [Dependencies](#dependencies)
|
|
|
|
|
<!-- /TOC -->
|
|
|
|
|
|
|
|
|
|
## Background and motivation
|
|
|
|
|
|