public void HandleResponse(GetResponse response) { if (response.ForceRetry) { Result = null; RequiresRetry = true; return; } switch (response.StatusCode) { case HttpStatusCode.NotModified: Result = (default(T), _changeVector); // value not changed return; case HttpStatusCode.NotFound: _session.RegisterMissing(_id); Result = default((T, string)); return; } if (response.Result != null) { var etag = response.Headers[Constants.Headers.Etag]; var res = JsonDeserializationClient.ConditionalGetResult((BlittableJsonReaderObject)response.Result); var documentInfo = DocumentInfo.GetNewDocumentInfo((BlittableJsonReaderObject)res.Results[0]); var r = _session.TrackEntity <T>(documentInfo); Result = (r, etag); return; } Result = null; _session.RegisterMissing(_id); }
public override void SetResponse(JsonOperationContext context, BlittableJsonReaderObject response, bool fromCache) { if (response == null) { Result = null; return; } if (fromCache) { // we have to clone the response here because otherwise the cached item might be freed while // we are still looking at this result, so we clone it to the side response = response.Clone(context); } Result = JsonDeserializationClient.ConditionalGetResult(response); }