19 #ifndef INCLUDE_RCF_TOKEN_HPP
20 #define INCLUDE_RCF_TOKEN_HPP
24 #include <boost/noncopyable.hpp>
26 #include <RCF/Export.hpp>
27 #include <RCF/Config.hpp>
28 #include <RCF/ThreadLibrary.hpp>
29 #include <RCF/TypeTraits.hpp>
41 class RCF_EXPORT Token
47 friend bool operator<(
const Token &lhs,
const Token &rhs);
48 friend bool operator==(
const Token &lhs,
const Token &rhs);
49 friend bool operator!=(
const Token &lhs,
const Token &rhs);
53 void serialize(SF::Archive &ar);
57 #if RCF_FEATURE_BOOST_SERIALIZATION==1
59 template<
typename Archive>
60 void serialize(Archive &ar,
const unsigned int)
62 ar & boost::serialization::make_nvp(
"Id", mId);
67 friend RCF_EXPORT RCF::MemOstream &operator<<(RCF::MemOstream &os,
const Token &token);
73 class TokenFactory : boost::noncopyable
76 TokenFactory(
int tokenCount);
78 bool requestToken(Token &token);
79 void returnToken(
const Token &token);
80 const std::vector<Token> & getTokenSpace();
81 std::size_t getAvailableTokenCount();
82 bool isAvailable(
const Token & token);
85 std::vector<Token> mTokenSpace;
86 std::vector<Token> mAvailableTokens;
87 ReadWriteMutex mMutex;
92 #endif // ! INCLUDE_RCF_TOKEN_HPP