thread_data.h 1.0 KB
Newer Older
羽飞's avatar
羽飞 已提交
1
/* Copyright (c) 2021 OceanBase and/or its affiliates. All rights reserved.
羽飞's avatar
羽飞 已提交
2 3 4 5 6 7 8 9 10 11
miniob is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
         http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details. */

//
12
// Created by Wangyunlai on 2023/03/07.
羽飞's avatar
羽飞 已提交
13 14
//

15
#pragma once
羽飞's avatar
羽飞 已提交
16

17 18
class Trx;
class Session;
羽飞's avatar
羽飞 已提交
19

20 21
class ThreadData
{
羽飞's avatar
羽飞 已提交
22
public:
23 24
  static ThreadData *current() { return thread_data_; }
  static void setup(ThreadData *thread) { thread_data_ = thread; }
羽飞's avatar
羽飞 已提交
25

26 27 28
public:
  ThreadData() = default;
  ~ThreadData() = default;
羽飞's avatar
羽飞 已提交
29

30 31
  Session *session() const { return session_; }
  Trx * trx() const;
羽飞's avatar
羽飞 已提交
32

33
  void set_session(Session *session) { session_ = session; }
羽飞's avatar
羽飞 已提交
34 35

private:
36
  static thread_local ThreadData * thread_data_;
羽飞's avatar
羽飞 已提交
37

38 39 40
private:
  Session *session_ = nullptr;
};