public V Get(object key)
        {
            var keyData = ToData(key);

            if (_nearCache != null)
            {
                var cached = _nearCache.Get(keyData);
                if (cached != null)
                {
                    if (cached.Equals(ClientNearCache.NullObject))
                    {
                        return(default(V));
                    }
                    return((V)cached);
                }
            }
            var request = MapGetCodec.EncodeRequest(GetName(), keyData, ThreadUtil.GetThreadId());
            var result  = Invoke(request, keyData);

            if (_nearCache != null)
            {
                _nearCache.Put(keyData, result);
            }
            return(ToObject <V>(MapGetCodec.DecodeResponse(result).response));
        }
示例#2
0
        protected virtual object GetInternal(IData keyData)
        {
            var request = MapGetCodec.EncodeRequest(Name, keyData, GetThreadId());
            var result  = Invoke(request, keyData);

            return(MapGetCodec.DecodeResponse(result).Response);
        }
示例#3
0
        /// <summary>
        /// Gets the value data for a key, or null if the map does not contain an entry with this key.
        /// </summary>
        /// <param name="keyData">The key data.</param>
        /// <param name="cancellationToken">A cancellation token.</param>
        /// <returns>The value data for the specified key, or null if the map does not contain an entry with this key.</returns>
        protected async Task <IData> GetDataAsync(IData keyData, CancellationToken cancellationToken)
        {
            var requestMessage  = MapGetCodec.EncodeRequest(Name, keyData, ContextId);
            var responseMessage = await Cluster.Messaging.SendToKeyPartitionOwnerAsync(requestMessage, keyData, cancellationToken).CAF();

            var response = MapGetCodec.DecodeResponse(responseMessage).Response;

            return(response);
        }
示例#4
0
        public virtual Task <TValue> GetAsync(TKey key)
        {
            CheckNotNull(key, NullKeyIsNotAllowed);
            var keyData = ToData(key);
            var request = MapGetCodec.EncodeRequest(Name, keyData, GetThreadId());

            return(InvokeAsync(request, keyData, m =>
            {
                var resp = MapGetCodec.DecodeResponse(m).Response;
                return ToObject <TValue>(resp);
            }));
        }
示例#5
0
        public virtual Task <TValue> GetAsync(TKey key)
        {
            ValidationUtil.CheckNotNull(key, ValidationUtil.NULL_KEY_IS_NOT_ALLOWED);
            var keyData = ToData(key);
            var request = MapGetCodec.EncodeRequest(GetName(), keyData, ThreadUtil.GetThreadId());

            return(InvokeAsync(request, keyData, m =>
            {
                var resp = MapGetCodec.DecodeResponse(m).response;
                return ToObject <TValue>(resp);
            }));
        }
示例#6
0
        public Task <TValue> GetAsync(TKey key)
        {
            var keyData = ToData(key);

            if (_nearCache != null)
            {
                var cached = _nearCache.Get(keyData);
                if (cached != null)
                {
                    var task = GetContext().GetExecutionService().Submit(() =>
                    {
                        if (cached.Equals(ClientNearCache.NullObject))
                        {
                            return(default(TValue));
                        }
                        return((TValue)cached);
                    });
                    return(task);
                }
            }

            var request = MapGetCodec.EncodeRequest(GetName(), keyData, ThreadUtil.GetThreadId());

            try
            {
                var task            = GetContext().GetInvocationService().InvokeOnKeyOwner(request, key);
                var deserializeTask = task.ToTask().ContinueWith(continueTask =>
                {
                    var responseMessage = ThreadUtil.GetResult(continueTask);
                    var result          = MapGetCodec.DecodeResponse(responseMessage).response;
                    if (_nearCache != null)
                    {
                        _nearCache.Put(keyData, result);
                    }
                    return(ToObject <TValue>(result));
                });
                return(deserializeTask);
            }
            catch (Exception e)
            {
                throw ExceptionUtil.Rethrow(e);
            }
        }