Exemple #1
0
        /// <summary>
        /// Subscribes the given client to messages of a given type.
        /// </summary>
        /// <param name="subscriber">
        /// The subscriber.
        /// </param>
        /// /// <param name="messageType">
        /// The message type.
        /// </param>
        /// /// <param name="context">
        /// The context.
        /// </param>
        /// <returns>
        /// The task
        /// </returns>
        public Task Subscribe(Subscriber subscriber, MessageType messageType, ContextBag context)
        {
            var subscriptionKey = new SubscriptionKey(messageType);
            var update          = new UpdateDefinitionBuilder <Subscription>().AddToSet(s => s.Subscribers, subscriber);

            return(this.collection.UpdateOneAsync(
                       s => s.Id == subscriptionKey,
                       update,
                       new UpdateOptions()
            {
                IsUpsert = true
            }));
        }
Exemple #2
0
        /// <summary>
        /// Unsubscribes the given client from messages of given type.
        /// </summary>
        /// <param name="subscriber">
        /// The subscriber.
        /// </param>
        /// /// <param name="messageType">
        /// The message type.
        /// </param>
        /// /// <param name="context">
        /// The context.
        /// </param>
        /// <returns>
        /// The task
        /// </returns>
        public Task Unsubscribe(Subscriber subscriber, MessageType messageType, ContextBag context)
        {
            var subscriptionKey = new SubscriptionKey(messageType);

            var update = new UpdateDefinitionBuilder <Subscription>().Pull(s => s.Subscribers, subscriber);

            return(this.collection.UpdateOneAsync(
                       s => s.Id == subscriptionKey && s.Subscribers.Contains(subscriber),
                       update,
                       new UpdateOptions()
            {
                IsUpsert = false
            }));
        }