public Result Get(out SaveDataIndexerValue value, ref SaveDataAttribute key) { value = default; lock (Locker) { Result rc = Initialize(); if (rc.IsFailure()) { return(rc); } rc = EnsureKvDatabaseLoaded(false); if (rc.IsFailure()) { return(rc); } rc = KvDatabase.Get(ref key, SpanHelpers.AsByteSpan(ref value)); if (rc.IsFailure()) { return(ResultFs.TargetNotFound.LogConverted(rc)); } return(Result.Success); } }
public Result Add(out ulong saveDataId, ref SaveDataAttribute key) { saveDataId = default; lock (Locker) { Result rc = Initialize(); if (rc.IsFailure()) { return(rc); } rc = EnsureKvDatabaseLoaded(false); if (rc.IsFailure()) { return(rc); } SaveDataIndexerValue value = default; rc = KvDatabase.Get(ref key, SpanHelpers.AsByteSpan(ref value)); if (rc.IsSuccess()) { return(ResultFs.SaveDataPathAlreadyExists.Log()); } LastPublishedId++; ulong newSaveDataId = LastPublishedId; value = new SaveDataIndexerValue { SaveDataId = newSaveDataId }; rc = KvDatabase.Set(ref key, SpanHelpers.AsByteSpan(ref value)); if (rc.IsFailure()) { LastPublishedId--; return(rc); } rc = AdjustOpenedInfoReaders(ref key); if (rc.IsFailure()) { return(rc); } saveDataId = newSaveDataId; return(Result.Success); } }