11401458bSopenharmony_ci/*
21401458bSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
31401458bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
41401458bSopenharmony_ci * you may not use this file except in compliance with the License.
51401458bSopenharmony_ci * You may obtain a copy of the License at
61401458bSopenharmony_ci *
71401458bSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
81401458bSopenharmony_ci *
91401458bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
101401458bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
111401458bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121401458bSopenharmony_ci * See the License for the specific language governing permissions and
131401458bSopenharmony_ci * limitations under the License.
141401458bSopenharmony_ci */
151401458bSopenharmony_ci
161401458bSopenharmony_ci#ifndef OHOS_HIVIEWDFX_SYS_EVENT_RULE_H
171401458bSopenharmony_ci#define OHOS_HIVIEWDFX_SYS_EVENT_RULE_H
181401458bSopenharmony_ci
191401458bSopenharmony_ci#include <cstdint>
201401458bSopenharmony_ci#include <iosfwd>
211401458bSopenharmony_ci#include <string>
221401458bSopenharmony_ci
231401458bSopenharmony_ci#include "parcel.h"
241401458bSopenharmony_ci#include "rule_type.h"
251401458bSopenharmony_ci
261401458bSopenharmony_cinamespace OHOS {
271401458bSopenharmony_cinamespace HiviewDFX {
281401458bSopenharmony_ciclass SysEventRule : public Parcelable {
291401458bSopenharmony_cipublic:
301401458bSopenharmony_ci    SysEventRule() {};
311401458bSopenharmony_ci    SysEventRule(const std::string& domain, const std::string& eventName,
321401458bSopenharmony_ci        const std::string& tag, uint32_t ruleType = RuleType::WHOLE_WORD, uint32_t eventType = 0)
331401458bSopenharmony_ci        : domain(domain), eventName(eventName), tag(tag), ruleType(ruleType), eventType(eventType) {}
341401458bSopenharmony_ci    SysEventRule(const std::string& domain, const std::string& eventName,
351401458bSopenharmony_ci        uint32_t ruleType = RuleType::WHOLE_WORD, uint32_t eventType = 0)
361401458bSopenharmony_ci        : SysEventRule(domain, eventName, "", ruleType, eventType) {}
371401458bSopenharmony_ci    SysEventRule(const std::string& tag, uint32_t ruleType = RuleType::WHOLE_WORD, uint32_t eventType = 0)
381401458bSopenharmony_ci        : SysEventRule("", "", tag, ruleType, eventType) {}
391401458bSopenharmony_ci    ~SysEventRule() = default;
401401458bSopenharmony_ci
411401458bSopenharmony_ci    bool Marshalling(Parcel& parcel) const override;
421401458bSopenharmony_ci    static SysEventRule* Unmarshalling(Parcel& parcel);
431401458bSopenharmony_ci
441401458bSopenharmony_ci    std::string domain;
451401458bSopenharmony_ci    std::string eventName;
461401458bSopenharmony_ci    std::string tag;
471401458bSopenharmony_ci    uint32_t ruleType = RuleType::WHOLE_WORD;
481401458bSopenharmony_ci    uint32_t eventType = 0;
491401458bSopenharmony_ci};
501401458bSopenharmony_ci} // namespace HiviewDFX
511401458bSopenharmony_ci} // namespace OHOS
521401458bSopenharmony_ci
531401458bSopenharmony_ci#endif // OHOS_HIVIEWDFX_SYS_EVENT_RULE_H
54