Exemple #1
0
        public async Task RoomMemberPayloadDirty(string roomId)
        {
            if (Logger.IsEnabled(LogLevel.Trace))
            {
                Logger.LogTrace($"roomMemberPayloadDirty({roomId})");
            }
            var contactIdList = await RoomMemberList(roomId);

            foreach (var contactId in contactIdList)
            {
                var cacheKey = CacheKeyRoomMember(roomId, contactId);
                _ = CacheRoomMemberPayload.Delete(cacheKey);
            }
        }
Exemple #2
0
        public async Task <RoomMemberPayload> RoomMemberPayload(string roomId, string memberId)
        {
            if (Logger.IsEnabled(LogLevel.Trace))
            {
                Logger.LogTrace($"roomMemberPayload(roomId={roomId}, memberId={memberId})");
            }
            if (string.IsNullOrWhiteSpace(roomId) || string.IsNullOrWhiteSpace(memberId))
            {
                throw new ArgumentException("no id");
            }

            //1. Try to get from cache
            var cacheKey      = CacheKeyRoomMember(roomId, memberId);
            var cachedPayload = CacheRoomMemberPayload.Get(cacheKey);

            if (cachedPayload != null)
            {
                return(cachedPayload);
            }

            //2. Cache not found
            var rawPayload = await RoomMemberRawPayload(roomId, memberId);

            if (rawPayload == null)
            {
                throw new InvalidOperationException($"contact({memberId}) is not in the Room({roomId})");
            }
            var payload = await RoomMemberRawPayloadParser(rawPayload);

            CacheRoomMemberPayload.Set(cacheKey, payload);
            if (Logger.IsEnabled(LogLevel.Trace))
            {
                Logger.LogTrace($"roomMemberPayload({roomId}) cache SET");
            }

            return(payload);
        }