public LockObjectReply Lock(LockObjectRequest request) { Console.WriteLine("Received LockObjectRequest with params:"); Console.Write($"Key: \r\n PartitionId: {request.Key.PartitionId} \r\n ObjectId: {request.Key.ObjectId}\r\n"); if (!KeyValuePairs.TryGetValue(new ObjectKey(request.Key), out ObjectValueManager objectValueManager)) { LocalReadWriteLock.AcquireWriterLock(-1); objectValueManager = new ObjectValueManager(); KeyValuePairs[new ObjectKey(request.Key)] = objectValueManager; objectValueManager.LockWrite(); LocalReadWriteLock.ReleaseWriterLock(); } else { objectValueManager.LockWrite(); } return(new LockObjectReply { Success = true }); }
public override Task <LockObjectReply> LockObject(LockObjectRequest request, ServerCallContext context) { return(Task.FromResult(Lock(request))); }