private void AddInvalidateListener()
        {
            try
            {
                IClientMessage          request;
                DistributedEventHandler handler;
                if (_cacheType == ClientNearCacheType.Map)
                {
                    request = MapAddNearCacheEntryListenerCodec.EncodeRequest(_mapName, (int)EntryEventType.Invalidation,
                                                                              false);

                    handler = message
                              => MapAddNearCacheEntryListenerCodec.AbstractEventHandler.Handle(message, HandleIMapInvalidation, HandleIMapBatchInvalidation);
                }
                else
                {
                    throw new NotImplementedException("Near cache is not available for this type of data structure");
                }

                _registrationId = _context.GetListenerService()
                                  .RegisterListener(request, message => MapAddNearCacheEntryListenerCodec.DecodeResponse(message).response,
                                                    id => MapRemoveEntryListenerCodec.EncodeRequest(_mapName, id), handler);
            }
            catch (Exception e)
            {
                Logger.Severe("-----------------\n Near Cache is not initialized!!! \n-----------------", e);
            }
        }
        public string AddEntryListener(IEntryListener <TKey, TValue> listener, bool includeValue)
        {
            var listenerFlags = GetListenerFlags(listener);
            var request       = MapAddEntryListenerCodec.EncodeRequest(GetName(), includeValue, listenerFlags, IsSmart());
            DistributedEventHandler handler =
                eventData => MapAddEntryListenerCodec.AbstractEventHandler.Handle(eventData,
                                                                                  (key, value, oldValue, mergingValue, type, uuid, entries) =>
            {
                OnEntryEvent(key, value, oldValue, mergingValue, type, uuid, entries, includeValue, listener);
            });

            return(RegisterListener(request, message => MapAddEntryListenerCodec.DecodeResponse(message).response,
                                    id => MapRemoveEntryListenerCodec.EncodeRequest(GetName(), id), handler));
        }
Example #3
0
        public Guid AddEntryListener(MapListener listener, bool includeValue)
        {
            var listenerAdapter = EntryListenerAdapter <TKey, TValue> .CreateAdapter(listener, Client.SerializationService);

            var listenerFlags = (int)listenerAdapter.ListenerFlags;
            var request       = MapAddEntryListenerCodec.EncodeRequest(Name, includeValue, listenerFlags, IsSmart());
            DistributedEventHandler handler = eventData => MapAddEntryListenerCodec.EventHandler.HandleEvent(eventData,
                                                                                                             (key, value, oldValue, mergingValue, type, uuid, entries) =>
            {
                OnEntryEvent(key, value, oldValue, mergingValue, type, uuid, entries, listenerAdapter);
            });

            return(RegisterListener(request, message => MapAddEntryListenerCodec.DecodeResponse(message).Response,
                                    id => MapRemoveEntryListenerCodec.EncodeRequest(Name, id), handler));
        }
        /// <summary>
        /// Subscribes to invalidation events.
        /// </summary>
        private async ValueTask <Guid> SubscribeToInvalidationEventsAsync()
        {
            var subscription = new ClusterSubscription(
                MapAddNearCacheInvalidationListenerCodec.EncodeRequest(Name, (int)MapEventTypes.Invalidated, false),
                (message, state) => MapAddNearCacheInvalidationListenerCodec.DecodeResponse(message).Response,
                (id, state) => MapRemoveEntryListenerCodec.EncodeRequest(((EventState)state).Name, id),
                (message, state) => MapRemoveEntryListenerCodec.DecodeResponse(message).Response,
                (message, state) => MapAddNearCacheInvalidationListenerCodec.HandleEventAsync(message, HandleCodecSingleEvent, HandleCodecBatchEvent, null, LoggerFactory),
                new EventState {
                Name = Name
            });

            await Cluster.Events.InstallSubscriptionAsync(subscription, CancellationToken.None).CfAwait();

            return(subscription.Id);
        }
Example #5
0
        public string AddEntryListener(MapListener listener, TKey key, bool includeValue)
        {
            var keyData         = ToData(key);
            var listenerAdapter =
                EntryListenerAdapter <TKey, TValue> .CreateAdapter(listener, GetContext().GetSerializationService());

            var listenerFlags = (int)listenerAdapter.ListenerFlags;
            var request       = MapAddEntryListenerToKeyCodec.EncodeRequest(GetName(), keyData, includeValue, listenerFlags, IsSmart());
            DistributedEventHandler handler = eventData => MapAddEntryListenerToKeyCodec.EventHandler.HandleEvent(eventData,
                                                                                                                  (key_, value, oldValue, mergingValue, type, uuid, entries) =>
            {
                OnEntryEvent(key_, value, oldValue, mergingValue, type, uuid, entries, listenerAdapter);
            });

            return(RegisterListener(request, message => MapAddEntryListenerToKeyCodec.DecodeResponse(message).response,
                                    id => MapRemoveEntryListenerCodec.EncodeRequest(GetName(), id), handler));
        }
Example #6
0
        private void RegisterInvalidateListener()
        {
            try
            {
                var request =
                    MapAddNearCacheEntryListenerCodec.EncodeRequest(Name, (int)EntryEventType.Invalidation, false);
                DistributedEventHandler handler = message =>
                                                  MapAddNearCacheEntryListenerCodec.EventHandler.HandleEvent(message,
                                                                                                             HandleIMapInvalidationEvent_v1_0, HandleIMapInvalidationEvent_v1_4,
                                                                                                             HandleIMapBatchInvalidationEvent_v1_0, HandleIMapBatchInvalidationEvent_v1_4);

                RegistrationId = Client.GetListenerService().RegisterListener(request,
                                                                              message => MapAddNearCacheEntryListenerCodec.DecodeResponse(message).response,
                                                                              id => MapRemoveEntryListenerCodec.EncodeRequest(Name, id), handler);
            }
            catch (Exception e)
            {
                Logger.Severe("-----------------\n Near Cache is not initialized!!! \n-----------------", e);
            }
        }
Example #7
0
 public virtual void Destroy()
 {
     if (registrationId != null)
     {
         if (cacheType == ClientNearCacheType.Map)
         {
             context.GetListenerService().StopListening(
                 s => MapRemoveEntryListenerCodec.EncodeRequest(mapName, s),
                 m => MapRemoveEntryListenerCodec.DecodeResponse(m).response, registrationId);
         }
         else if (cacheType == ClientNearCacheType.ReplicatedMap)
         {
             //TODO REPLICATED MAP
             throw new NotImplementedException();
         }
         else
         {
             throw new NotImplementedException("Near cache is not available for this type of data structure");
         }
     }
     cache.Clear();
 }
 public virtual void Destroy()
 {
     if (_registrationId != null)
     {
         if (_cacheType == ClientNearCacheType.Map)
         {
             _context.GetListenerService().DeregisterListener(_registrationId,
                                                              s => MapRemoveEntryListenerCodec.EncodeRequest(_mapName, s)
                                                              );
         }
         else if (_cacheType == ClientNearCacheType.ReplicatedMap)
         {
             //TODO REPLICATED MAP
             throw new NotImplementedException();
         }
         else
         {
             throw new NotImplementedException("Near cache is not available for this type of data structure");
         }
     }
     Cache.Clear();
 }
 public bool RemoveEntryListener(string id)
 {
     return(StopListening(s => MapRemoveEntryListenerCodec.EncodeRequest(GetName(), s),
                          message => MapRemoveEntryListenerCodec.DecodeResponse(message).response, id));
 }
        private static ClientMessage CreateUnsubscribeRequest(Guid subscriptionId, object state)
        {
            var sstate = ToSafeState <MapSubscriptionState>(state);

            return(MapRemoveEntryListenerCodec.EncodeRequest(sstate.Name, subscriptionId));
        }
 public bool RemoveEntryListener(string registrationId)
 {
     return(DeregisterListener(registrationId, id => MapRemoveEntryListenerCodec.EncodeRequest(GetName(), id)));
 }