aboutsummaryrefslogtreecommitdiff
path: root/syncapi/syncapi.go
diff options
context:
space:
mode:
authorAlex Chen <Cnly@users.noreply.github.com>2019-07-12 22:59:53 +0800
committerGitHub <noreply@github.com>2019-07-12 22:59:53 +0800
commit29841bed6b1a88787211368e6052a87a658c5714 (patch)
tree85f5dcbcfdeea7ee7c6db74379df31991cd6c9c8 /syncapi/syncapi.go
parentf8463063ac4f45e61dfd0b27647bf00a8d05daa1 (diff)
Add typing notifications to /sync responses - fixes #635 (#718)
This PR adds a new consumer for typing notifications in syncapi. It also brings changes to syncserver.go and some related files so EDUs can better fit in /sync responses. Fixes #635. Fixes #574.
Diffstat (limited to 'syncapi/syncapi.go')
-rw-r--r--syncapi/syncapi.go16
1 files changed, 11 insertions, 5 deletions
diff --git a/syncapi/syncapi.go b/syncapi/syncapi.go
index 2db54c3c..4738feea 100644
--- a/syncapi/syncapi.go
+++ b/syncapi/syncapi.go
@@ -28,7 +28,6 @@ import (
"github.com/matrix-org/dendrite/syncapi/routing"
"github.com/matrix-org/dendrite/syncapi/storage"
"github.com/matrix-org/dendrite/syncapi/sync"
- "github.com/matrix-org/dendrite/syncapi/types"
)
// SetupSyncAPIComponent sets up and registers HTTP handlers for the SyncAPI
@@ -39,17 +38,17 @@ func SetupSyncAPIComponent(
accountsDB *accounts.Database,
queryAPI api.RoomserverQueryAPI,
) {
- syncDB, err := storage.NewSyncServerDatabase(string(base.Cfg.Database.SyncAPI))
+ syncDB, err := storage.NewSyncServerDatasource(string(base.Cfg.Database.SyncAPI))
if err != nil {
logrus.WithError(err).Panicf("failed to connect to sync db")
}
- pos, err := syncDB.SyncStreamPosition(context.Background())
+ pos, err := syncDB.SyncPosition(context.Background())
if err != nil {
- logrus.WithError(err).Panicf("failed to get stream position")
+ logrus.WithError(err).Panicf("failed to get sync position")
}
- notifier := sync.NewNotifier(types.StreamPosition(pos))
+ notifier := sync.NewNotifier(pos)
err = notifier.Load(context.Background(), syncDB)
if err != nil {
logrus.WithError(err).Panicf("failed to start notifier")
@@ -71,5 +70,12 @@ func SetupSyncAPIComponent(
logrus.WithError(err).Panicf("failed to start client data consumer")
}
+ typingConsumer := consumers.NewOutputTypingEventConsumer(
+ base.Cfg, base.KafkaConsumer, notifier, syncDB,
+ )
+ if err = typingConsumer.Start(); err != nil {
+ logrus.WithError(err).Panicf("failed to start typing server consumer")
+ }
+
routing.Setup(base.APIMux, requestPool, syncDB, deviceDB)
}