Exemplo n.º 1
0
        public string GetAndUpdate(string partitionId, string objectId, ReadAdvancedResponse response = null)
        {
            Console.WriteLine("Get and update");

            ReadAdvancedResponse req = null;
            var obj = new PartitionObject(partitionId, objectId);

            if (_previousValues.TryGetValue(obj, out req))
            {
                if (response == null)
                {
                    return(req.ObjectValue);
                }

                if (req.Timestamp <= response.Timestamp)
                {
                    _previousValues[obj] = response;
                    return(response.ObjectValue);
                }

                return(req.ObjectValue);
            }
            else
            {
                if (response == null)
                {
                    return(_service.ObjectNotPresent);
                }

                _previousValues.Add(obj, response);
                return(response.ObjectValue);
            }
        }
Exemplo n.º 2
0
        public void WriteToCache(string partitionId, string objectId, string objectValue, int timestamp)
        {
            ReadAdvancedResponse req = null;
            var r = new ReadAdvancedResponse {
                ObjectValue = objectValue, Timestamp = timestamp
            };
            var obj = new PartitionObject(partitionId, objectId);

            if (!_previousValues.TryGetValue(obj, out req))
            {
                _previousValues.Add(obj, r);
            }
            else
            {
                _previousValues[obj] = r;
            }
        }
Exemplo n.º 3
0
        private ReadAdvancedResponse ReadAdvanced(ReadAdvancedRequest request)
        {
            Console.WriteLine("Received Read Request: " + request.ToString());
            try {
                var partitionId = request.PartitionId;
                var objectId    = request.ObjectId;

                var partition   = _storage.GetPartitionOrThrowException(partitionId);
                var objectValue = _storage.ReadAdvanced(partitionId, objectId);

                var response = new ReadAdvancedResponse {
                    ObjectValue = objectValue.value,
                    Timestamp   = objectValue.timestampCounter
                };

                return(response);
            }
            catch (Exception) {
                /*Partition not founded */
                return(new ReadAdvancedResponse {
                    ObjectValue = "N/A"
                });
            }
        }