1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef BASE_EVENT_STORE_SYS_EVENT_SEQ_MGR_H
17 #define BASE_EVENT_STORE_SYS_EVENT_SEQ_MGR_H
18 
19 #include <atomic>
20 
21 namespace OHOS {
22 namespace HiviewDFX {
23 namespace EventStore {
24 class SysEventSequenceManager {
25 public:
26     static SysEventSequenceManager& GetInstance();
27     void SetSequence(int64_t seq);
28     int64_t GetSequence();
29 
30 private:
31    SysEventSequenceManager();
32    ~SysEventSequenceManager() = default;
33 
34 private:
35     void WriteSeqToFile(int64_t seq);
36     void ReadSeqFromFile(int64_t& seq);
37     std::string GetSequenceFile() const;
38 
39 private:
40     std::atomic<int64_t> curSeq_ = 0;
41 };
42 } // namespace EventStore
43 } // namespace HiviewDFX
44 } // namespace OHOS
45 
46 #endif // BASE_EVENT_STORE_SYS_EVENT_SEQ_MGR_H