17405867cSopenharmony_ci/*
27405867cSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
37405867cSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
47405867cSopenharmony_ci * you may not use this file except in compliance with the License.
57405867cSopenharmony_ci * You may obtain a copy of the License at
67405867cSopenharmony_ci *
77405867cSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
87405867cSopenharmony_ci *
97405867cSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
107405867cSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
117405867cSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
127405867cSopenharmony_ci * See the License for the specific language governing permissions and
137405867cSopenharmony_ci * limitations under the License.
147405867cSopenharmony_ci */
157405867cSopenharmony_ci#include "app_event.h"
167405867cSopenharmony_ci
177405867cSopenharmony_ci#include "ffrt.h"
187405867cSopenharmony_ci#include "hiappevent_base.h"
197405867cSopenharmony_ci#include "hiappevent_verify.h"
207405867cSopenharmony_ci#include "hiappevent_write.h"
217405867cSopenharmony_ci
227405867cSopenharmony_cinamespace OHOS {
237405867cSopenharmony_cinamespace HiviewDFX {
247405867cSopenharmony_cinamespace HiAppEvent {
257405867cSopenharmony_ciEvent::Event(const std::string& domain, const std::string& name, EventType type)
267405867cSopenharmony_ci{
277405867cSopenharmony_ci    eventPack_ = std::make_shared<AppEventPack>(domain, name, type);
287405867cSopenharmony_ci}
297405867cSopenharmony_ci
307405867cSopenharmony_civoid Event::AddParam(const std::string& key, bool value)
317405867cSopenharmony_ci{
327405867cSopenharmony_ci    eventPack_->AddParam(key, value);
337405867cSopenharmony_ci}
347405867cSopenharmony_ci
357405867cSopenharmony_civoid Event::AddParam(const std::string& key, int32_t value)
367405867cSopenharmony_ci{
377405867cSopenharmony_ci    eventPack_->AddParam(key, value);
387405867cSopenharmony_ci}
397405867cSopenharmony_ci
407405867cSopenharmony_civoid Event::AddParam(const std::string& key, int64_t value)
417405867cSopenharmony_ci{
427405867cSopenharmony_ci    eventPack_->AddParam(key, value);
437405867cSopenharmony_ci}
447405867cSopenharmony_ci
457405867cSopenharmony_civoid Event::AddParam(const std::string& key, double value)
467405867cSopenharmony_ci{
477405867cSopenharmony_ci    eventPack_->AddParam(key, value);
487405867cSopenharmony_ci}
497405867cSopenharmony_ci
507405867cSopenharmony_civoid Event::AddParam(const std::string& key, const std::string& value)
517405867cSopenharmony_ci{
527405867cSopenharmony_ci    eventPack_->AddParam(key, value);
537405867cSopenharmony_ci}
547405867cSopenharmony_ci
557405867cSopenharmony_civoid Event::AddParam(const std::string& key, const std::vector<bool>& value)
567405867cSopenharmony_ci{
577405867cSopenharmony_ci    eventPack_->AddParam(key, value);
587405867cSopenharmony_ci}
597405867cSopenharmony_ci
607405867cSopenharmony_civoid Event::AddParam(const std::string& key, const std::vector<int32_t>& value)
617405867cSopenharmony_ci{
627405867cSopenharmony_ci    eventPack_->AddParam(key, value);
637405867cSopenharmony_ci}
647405867cSopenharmony_ci
657405867cSopenharmony_civoid Event::AddParam(const std::string& key, const std::vector<int64_t>& value)
667405867cSopenharmony_ci{
677405867cSopenharmony_ci    eventPack_->AddParam(key, value);
687405867cSopenharmony_ci}
697405867cSopenharmony_ci
707405867cSopenharmony_civoid Event::AddParam(const std::string& key, const std::vector<double>& value)
717405867cSopenharmony_ci{
727405867cSopenharmony_ci    eventPack_->AddParam(key, value);
737405867cSopenharmony_ci}
747405867cSopenharmony_ci
757405867cSopenharmony_civoid Event::AddParam(const std::string& key, const std::vector<std::string>& value)
767405867cSopenharmony_ci{
777405867cSopenharmony_ci    eventPack_->AddParam(key, value);
787405867cSopenharmony_ci}
797405867cSopenharmony_ci
807405867cSopenharmony_ciint Write(const Event& event)
817405867cSopenharmony_ci{
827405867cSopenharmony_ci    if (!IsApp()) {
837405867cSopenharmony_ci        return ErrorCode::ERROR_NOT_APP;
847405867cSopenharmony_ci    }
857405867cSopenharmony_ci    int ret = VerifyAppEvent(event.eventPack_);
867405867cSopenharmony_ci    if (ret >= 0) {
877405867cSopenharmony_ci        auto appEventPack = event.eventPack_;
887405867cSopenharmony_ci        ffrt::submit([appEventPack]() {
897405867cSopenharmony_ci            WriteEvent(appEventPack);
907405867cSopenharmony_ci            }, {}, {}, ffrt::task_attr().name("app_event"));
917405867cSopenharmony_ci    }
927405867cSopenharmony_ci    return ret;
937405867cSopenharmony_ci}
947405867cSopenharmony_ci} // namespace HiAppEvent
957405867cSopenharmony_ci} // namespace HiviewDFX
967405867cSopenharmony_ci} // namespace OHOS
97