diff --git a/be/src/env/CMakeLists.txt b/be/src/env/CMakeLists.txt index 0f3da6ad82..7e21c99d7b 100644 --- a/be/src/env/CMakeLists.txt +++ b/be/src/env/CMakeLists.txt @@ -23,4 +23,5 @@ set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/src/env") add_library(Env STATIC env_posix.cpp + env_util.cpp ) diff --git a/be/src/env/env_util.cpp b/be/src/env/env_util.cpp new file mode 100644 index 0000000000..07bf874ae0 --- /dev/null +++ b/be/src/env/env_util.cpp @@ -0,0 +1,50 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +#include "env/env_util.h" + +#include "env/env.h" + +using std::shared_ptr; +using std::string; +using std::unique_ptr; + +namespace doris { +namespace env_util { + +Status open_file_for_write(Env* env, const string& path, shared_ptr* file) { + return open_file_for_write(WritableFileOptions(), env, path, file); +} + +Status open_file_for_write(const WritableFileOptions& opts, + Env *env, const string &path, + shared_ptr *file) { + unique_ptr w; + RETURN_IF_ERROR(env->new_writable_file(opts, path, &w)); + file->reset(w.release()); + return Status::OK(); +} + +Status open_file_for_random(Env *env, const string &path, shared_ptr *file) { + unique_ptr r; + RETURN_IF_ERROR(env->new_random_access_file(path, &r)); + file->reset(r.release()); + return Status::OK(); +} + +} // namespace env_util +} // namespace doris diff --git a/be/src/env/env_util.h b/be/src/env/env_util.h new file mode 100644 index 0000000000..aa2af492a3 --- /dev/null +++ b/be/src/env/env_util.h @@ -0,0 +1,43 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +#pragma once + +#include +#include + +#include "common/status.h" + +namespace doris { + +class Env; +class RandomAccessFile; +class WritableFile; +struct WritableFileOptions; + +namespace env_util { + +Status open_file_for_write(Env *env, const std::string& path, std::shared_ptr *file); + +Status open_file_for_write(const WritableFileOptions& opts, Env *env, + const std::string& path, std::shared_ptr *file); + +Status open_file_for_random(Env *env, const std::string& path, + std::shared_ptr *file); + +} // namespace env_util +} // namespace doris +