public TResult GetOrAdd <TKey, TResult>(TKey key, TResult result) { var getRequest = new RocksGrpcRequest() { Key = key.xToJson(), Value = result.xToJson(), Command = "GET", Path = "testdb5" }; var clientResult = _client.ExecuteCommandAsync(getRequest).GetAwaiter().GetResult(); if (clientResult.State == false) { var putRequest = new RocksGrpcRequest() { Key = key.xToJson(), Value = result.xToJson(), Command = "PUT", Path = "testdb5" }; _client.ExecuteCommandAsync(putRequest).GetAwaiter().GetResult(); } return(JsonConvert.DeserializeObject <TResult>(clientResult.Value)); }
public override Task <RocksGrpcReply> ExecuteCommand(RocksGrpcRequest request, ServerCallContext context) { var rocksDbRequest = new RocksDBRequest() { Path = request.Path, Command = ROCKSDB_COMMAND.Parse(request.Command), Key = request.Key, Value = request.Value, Keys = request.Keys, KeyValues = new Dictionary <string, string>(request.KeyValues) }; var result = RocksDBHandler.Instance.ExecuteCommand(rocksDbRequest); var rocksGrpcReply = new RocksGrpcReply() { Key = result.Key.xSafe(), Value = result.Value.xSafe(), State = result.State.xSafe <bool>(false), StateMsg = result.StateMsg.xSafe(), KeyValues = { result.KeyValues.xSafe <Dictionary <string, string> >() } }; return(Task.FromResult(rocksGrpcReply)); }