123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #ifndef BASE_SEQUENCE_TOKEN_H_
- #define BASE_SEQUENCE_TOKEN_H_
- #include "base/base_export.h"
- namespace base {
- class BASE_EXPORT SequenceToken {
- public:
-
- SequenceToken() = default;
-
- SequenceToken(const SequenceToken& other) = default;
- SequenceToken& operator=(const SequenceToken& other) = default;
-
-
- bool operator==(const SequenceToken& other) const;
- bool operator!=(const SequenceToken& other) const;
-
- bool IsValid() const;
-
-
- int ToInternalValue() const;
-
-
- static SequenceToken Create();
-
-
-
- static SequenceToken GetForCurrentThread();
- private:
- explicit SequenceToken(int token) : token_(token) {}
- static constexpr int kInvalidSequenceToken = -1;
- int token_ = kInvalidSequenceToken;
- };
- class BASE_EXPORT TaskToken {
- public:
-
- TaskToken() = default;
-
- TaskToken(const TaskToken& other) = default;
- TaskToken& operator=(const TaskToken& other) = default;
-
-
- bool operator==(const TaskToken& other) const;
- bool operator!=(const TaskToken& other) const;
-
- bool IsValid() const;
-
-
-
-
- static TaskToken GetForCurrentThread();
- private:
- friend class ScopedSetSequenceTokenForCurrentThread;
- explicit TaskToken(int token) : token_(token) {}
-
-
-
- static TaskToken Create();
- static constexpr int kInvalidTaskToken = -1;
- int token_ = kInvalidTaskToken;
- };
- class BASE_EXPORT ScopedSetSequenceTokenForCurrentThread {
- public:
-
-
-
-
-
- explicit ScopedSetSequenceTokenForCurrentThread(
- const SequenceToken& sequence_token);
- ScopedSetSequenceTokenForCurrentThread(
- const ScopedSetSequenceTokenForCurrentThread&) = delete;
- ScopedSetSequenceTokenForCurrentThread& operator=(
- const ScopedSetSequenceTokenForCurrentThread&) = delete;
- ~ScopedSetSequenceTokenForCurrentThread();
- private:
- const SequenceToken sequence_token_;
- const TaskToken task_token_;
- };
- }
- #endif
|