/// <summary>
        ///     Handles the MessageReceived event of the channel.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="MessageEventArgs{TMessage}" /> instance containing the event data.</param>
        protected override void Channel_MessageReceived(object sender, MessageEventArgs <EntityFieldCacheMessage> e)
        {
            using (new DeferredChannelMessageContext())
            {
                if (MessageReceivedAction != null)
                {
                    MessageReceivedAction(e);
                }

                if (e.Message.Clear)
                {
                    ProviderClear( );
                    return;
                }

                if (e.Message.RemoveKeys != null && e.Message.RemoveKeys.Count > 0)
                {
                    foreach (SerializableEntityId key in e.Message.RemoveKeys)
                    {
                        ProviderRemove(key.Id);
                    }

                    RedisMessageCacheInvalidation.Invalidate(e.Message.RemoveKeys.ToList( ));
                }
            }
        }
Beispiel #2
0
        /// <summary>
        ///     Handles the MessageReceived event of the channel.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="args">
        ///     The <see cref="MessageEventArgs{EntityRelationshipCacheMessage}" /> instance containing the event
        ///     data.
        /// </param>
        private static void Channel_MessageReceived(object sender, MessageEventArgs <EntityRelationshipCacheMessage> args)
        {
            using (new DeferredChannelMessageContext())
            {
                if (args.Message.ClearForward && args.Message.ClearReverse)
                {
                    Instance.ProviderClear( );
                    return;
                }

                if (args.Message.ClearForward)
                {
                    Instance.ProviderClear(Direction.Forward);
                    return;
                }

                if (args.Message.ClearReverse)
                {
                    Instance.ProviderClear(Direction.Reverse);
                    return;
                }

                if (args.Message.RemoveKeys != null && args.Message.RemoveKeys.Count > 0)
                {
                    foreach (SerializableEntityRelationshipCacheKey key in args.Message.RemoveKeys)
                    {
                        Instance.ProviderRemove(new EntityRelationshipCacheKey(key.EntityId.Id, key.Direction));
                    }

                    if (!args.Message.SuppressFullInvalidation)
                    {
                        RedisMessageCacheInvalidation.Invalidate(args.Message.RemoveKeys.Select(k => k.EntityId).ToList( ));
                    }
                }

                if (args.Message.RemoveTypeKeys != null && args.Message.RemoveTypeKeys.Count > 0)
                {
                    foreach (SerializableEntityRelationshipCacheTypeKey key in args.Message.RemoveTypeKeys)
                    {
                        Instance.ProviderRemove(new EntityRelationshipCacheTypeKey(key.EntityId.Id, key.Direction, key.TypeId));
                    }

                    if (!args.Message.SuppressFullInvalidation)
                    {
                        RedisMessageCacheInvalidation.Invalidate(args.Message.RemoveTypeKeys.Select(k => k.EntityId).ToList( ));
                    }
                }
            }
        }