diff options
Diffstat (limited to 'federationsender/internal/query.go')
-rw-r--r-- | federationsender/internal/query.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/federationsender/internal/query.go b/federationsender/internal/query.go new file mode 100644 index 00000000..88dd50a6 --- /dev/null +++ b/federationsender/internal/query.go @@ -0,0 +1,39 @@ +package internal + +import ( + "context" + + "github.com/matrix-org/dendrite/federationsender/api" + "github.com/matrix-org/gomatrixserverlib" +) + +// QueryJoinedHostsInRoom implements api.FederationSenderInternalAPI +func (f *FederationSenderInternalAPI) QueryJoinedHostsInRoom( + ctx context.Context, + request *api.QueryJoinedHostsInRoomRequest, + response *api.QueryJoinedHostsInRoomResponse, +) (err error) { + response.JoinedHosts, err = f.db.GetJoinedHosts(ctx, request.RoomID) + return +} + +// QueryJoinedHostServerNamesInRoom implements api.FederationSenderInternalAPI +func (f *FederationSenderInternalAPI) QueryJoinedHostServerNamesInRoom( + ctx context.Context, + request *api.QueryJoinedHostServerNamesInRoomRequest, + response *api.QueryJoinedHostServerNamesInRoomResponse, +) (err error) { + joinedHosts, err := f.db.GetJoinedHosts(ctx, request.RoomID) + if err != nil { + return + } + + response.ServerNames = make([]gomatrixserverlib.ServerName, 0, len(joinedHosts)) + for _, host := range joinedHosts { + response.ServerNames = append(response.ServerNames, host.ServerName) + } + + // TODO: remove duplicates? + + return +} |