18d05d8e7Sopenharmony_ci/*
28d05d8e7Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
38d05d8e7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
48d05d8e7Sopenharmony_ci * you may not use this file except in compliance with the License.
58d05d8e7Sopenharmony_ci * You may obtain a copy of the License at
68d05d8e7Sopenharmony_ci *
78d05d8e7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
88d05d8e7Sopenharmony_ci *
98d05d8e7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
108d05d8e7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
118d05d8e7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
128d05d8e7Sopenharmony_ci * See the License for the specific language governing permissions and
138d05d8e7Sopenharmony_ci * limitations under the License.
148d05d8e7Sopenharmony_ci */
158d05d8e7Sopenharmony_ci
168d05d8e7Sopenharmony_ci#include <memory>
178d05d8e7Sopenharmony_ci#include <vector>
188d05d8e7Sopenharmony_ci
198d05d8e7Sopenharmony_ci#include "file_trash_n_exporter.h"
208d05d8e7Sopenharmony_ci#include "filemgmt_libn.h"
218d05d8e7Sopenharmony_ci#include "hilog_wrapper.h"
228d05d8e7Sopenharmony_ci
238d05d8e7Sopenharmony_cinamespace OHOS {
248d05d8e7Sopenharmony_cinamespace Trash {
258d05d8e7Sopenharmony_ciusing namespace std;
268d05d8e7Sopenharmony_ci
278d05d8e7Sopenharmony_ciEXTERN_C_START
288d05d8e7Sopenharmony_cistatic napi_value Export(napi_env env, napi_value exports)
298d05d8e7Sopenharmony_ci{
308d05d8e7Sopenharmony_ci    std::vector<unique_ptr<NExporter>> products;
318d05d8e7Sopenharmony_ci    products.emplace_back(make_unique<FileTrashNExporter>(env, exports));
328d05d8e7Sopenharmony_ci
338d05d8e7Sopenharmony_ci    for (auto &&product : products) {
348d05d8e7Sopenharmony_ci        string nExporterName = product->GetClassName();
358d05d8e7Sopenharmony_ci        if (!product->Export()) {
368d05d8e7Sopenharmony_ci            HILOG_ERROR("INNER BUG. Failed to export class %{public}s for module trash", nExporterName.c_str());
378d05d8e7Sopenharmony_ci            return nullptr;
388d05d8e7Sopenharmony_ci        } else {
398d05d8e7Sopenharmony_ci            HILOG_DEBUG("Class %{public}s for module trash has been exported", nExporterName.c_str());
408d05d8e7Sopenharmony_ci        }
418d05d8e7Sopenharmony_ci    }
428d05d8e7Sopenharmony_ci    return exports;
438d05d8e7Sopenharmony_ci}
448d05d8e7Sopenharmony_ciEXTERN_C_END
458d05d8e7Sopenharmony_ci
468d05d8e7Sopenharmony_cistatic napi_module _module = {
478d05d8e7Sopenharmony_ci    .nm_version = 1,
488d05d8e7Sopenharmony_ci    .nm_flags = 0,
498d05d8e7Sopenharmony_ci    .nm_filename = nullptr,
508d05d8e7Sopenharmony_ci    .nm_register_func = Export,
518d05d8e7Sopenharmony_ci    .nm_modname = "file.trash",
528d05d8e7Sopenharmony_ci    .nm_priv = ((void *)0),
538d05d8e7Sopenharmony_ci    .reserved = {0}
548d05d8e7Sopenharmony_ci};
558d05d8e7Sopenharmony_ci
568d05d8e7Sopenharmony_ciextern "C" __attribute__((constructor)) void RegisterModule(void)
578d05d8e7Sopenharmony_ci{
588d05d8e7Sopenharmony_ci    napi_module_register(&_module);
598d05d8e7Sopenharmony_ci}
608d05d8e7Sopenharmony_ci} // namespace Trash
618d05d8e7Sopenharmony_ci} // namespace OHOS
62