コード例 #1
0
        public void ShouldWork()
        {
            var query = new SubscriptionsByTopic(base.connectionString);

            query.Execute(tc.Id.Value)
            .Should().Contain(subs1)
            .And.Not.Contain(subs2);
        }
コード例 #2
0
        public static void AddUser(UserSubscription user)
        {
            // 获取某个主题订阅
            SubscriptionsByTopic subscriptionsByTopic;

            SubscriptionsByTopic.TryGetValue(user.Topic, out subscriptionsByTopic);

            // 如果主题不存在,新添加
            if (subscriptionsByTopic == null)
            {
                subscriptionsByTopic = new SubscriptionsByTopic()
                {
                    Topic = user.Topic
                };

                var wasAdded = SubscriptionsByTopic.TryAdd(user.Topic, subscriptionsByTopic);
            }


            // 获取某个主题用户的全部订阅
            SubscriptionsByUser subscriptionsByUser;

            subscriptionsByTopic.SubscriptionsByUser.TryGetValue(user.ConnectionId, out subscriptionsByUser);

            // 主题用户不存在,新添加
            if (subscriptionsByUser == null)
            {
                subscriptionsByUser = new SubscriptionsByUser()
                {
                    ConnectionId = user.ConnectionId,
                };

                var wasAdded = subscriptionsByTopic.SubscriptionsByUser.TryAdd(user.ConnectionId, subscriptionsByUser);
            }

            // 用户订阅值同步
            subscriptionsByUser.SubscriptionsByTopic.AddOrUpdate(user.Topic, user, (key, oldValue) => oldValue = user);
        }