public override Task <lockReply> LockObject(lockRequest request, ServerCallContext context) { lock (this) { this.current_key = new DataStoreKey(request.PartitionId, request.ObjectId); Partition p = server.getPartition(request.PartitionId); p.lockObject(current_key, true); } return(Task.FromResult(new lockReply())); }
public override Task <NewValueReply> WriteNewValue(NewValueRequest request, ServerCallContext context) { Partition partition = server.getPartition(current_key.partition_id); DataStoreValue value = new DataStoreValue(); value.val = request.Val; partition.addNewOrUpdateExisting(current_key, value); partition.lockObject(current_key, false); return(Task.FromResult(new NewValueReply { Ok = true })); }
public void doWork() { Partition partition = server.getPartition(request.ObjectKey.PartitionId); Dictionary <string, ServerCommunicationService.ServerCommunicationServiceClient> PartitionReplicas = partition.getReplicas(); atomicWriteLocallyAndUpdateClock(partition); int clock = partition.getClock(); Console.WriteLine(">>> PartitionClock=" + clock); Console.WriteLine(">>> Start Updating value and clock on replicas..."); WriteReply reply = write_new_value_replicas(PartitionReplicas, request, clock); server.setWriteResult(request, reply); }
public ReadReply ReadHandler(ReadRequest request) { Partition partition = server.getPartition(request.ObjectKey.PartitionId); int partitionClock = partition.getClock(); Console.WriteLine(">>> PartitionName=" + request.ObjectKey.PartitionId + ", PartitionClock=" + partitionClock); ReadReply reply; try { DataStoreValue value = partition.getData(new DataStoreKey(request.ObjectKey.PartitionId, request.ObjectKey.ObjectId)); reply = new ReadReply { Object = new DataStoreValueDto { Val = value.val }, ObjectExists = true, PartitionClock = partitionClock }; } catch (Exception) { reply = new ReadReply { Object = new DataStoreValueDto { Val = "NA" }, ObjectExists = false, PartitionClock = partitionClock }; } return(reply); }
public ReadReply ReadHandler(ReadRequest request) { Partition partition = server.getPartition(request.ObjectKey.PartitionId); ReadReply reply = null; try { DataStoreValue value = partition.getData(new DataStoreKey(request.ObjectKey.PartitionId, request.ObjectKey.ObjectId)); reply = new ReadReply { Object = new DataStoreValueDto { Val = value.val }, ObjectExists = true }; } catch (Exception) { reply = new ReadReply { Object = new DataStoreValueDto { Val = "NA" }, ObjectExists = false }; } return(reply); }
public void doWork() { Partition partition = server.getPartition(request.ObjectKey.PartitionId); Dictionary <string, ServerCommunicationService.ServerCommunicationServiceClient> PartitionReplicas = partition.getReplicas(); lockReplicas(PartitionReplicas, this.request.ObjectKey); write_new_value_locally(partition, request); WriteReply reply = write_new_value_replicas(PartitionReplicas, request); server.setWriteResult(request, reply); }