MCPcopy Create free account
hub / github.com/daodst/chat / refreshPublicRoomCache

Function refreshPublicRoomCache

clientapi/routing/directory_public.go:232–263  ·  view source on GitHub ↗
(
	ctx context.Context, rsAPI roomserverAPI.ClientRoomserverAPI, extRoomsProvider api.ExtraPublicRoomsProvider,
)

Source from the content-addressed store, hash-verified

230}
231
232func refreshPublicRoomCache(
233 ctx context.Context, rsAPI roomserverAPI.ClientRoomserverAPI, extRoomsProvider api.ExtraPublicRoomsProvider,
234) []gomatrixserverlib.PublicRoom {
235 cacheMu.Lock()
236 defer cacheMu.Unlock()
237 var extraRooms []gomatrixserverlib.PublicRoom
238 if extRoomsProvider != nil {
239 extraRooms = extRoomsProvider.Rooms()
240 }
241
242 var queryRes roomserverAPI.QueryPublishedRoomsResponse
243 err := rsAPI.QueryPublishedRooms(ctx, &roomserverAPI.QueryPublishedRoomsRequest{}, &queryRes)
244 if err != nil {
245 util.GetLogger(ctx).WithError(err).Error("QueryPublishedRooms failed")
246 return publicRoomsCache
247 }
248 pubRooms, err := roomserverAPI.PopulatePublicRooms(ctx, queryRes.RoomIDs, rsAPI)
249 if err != nil {
250 util.GetLogger(ctx).WithError(err).Error("PopulatePublicRooms failed")
251 return publicRoomsCache
252 }
253 publicRoomsCache = []gomatrixserverlib.PublicRoom{}
254 publicRoomsCache = append(publicRoomsCache, pubRooms...)
255 publicRoomsCache = append(publicRoomsCache, extraRooms...)
256 publicRoomsCache = dedupeAndShuffle(publicRoomsCache)
257
258 // sort by total joined member count (big to small)
259 sort.SliceStable(publicRoomsCache, func(i, j int) bool {
260 return publicRoomsCache[i].JoinedMembersCount > publicRoomsCache[j].JoinedMembersCount
261 })
262 return publicRoomsCache
263}
264
265func getPublicRoomsFromCache() []gomatrixserverlib.PublicRoom {
266 cacheMu.Lock()

Callers 1

publicRoomsFunction · 0.85

Calls 6

dedupeAndShuffleFunction · 0.85
LockMethod · 0.80
UnlockMethod · 0.80
RoomsMethod · 0.65
QueryPublishedRoomsMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected