|
| sessionless_semaphore (const std::string &proxy_name, client::spi::ClientContext *context, const raft_group_id &group_id, const std::string &object_name, internal::session::proxy_session_manager &session_manager) |
boost::future< void > | acquire (int32_t permits) override |
boost::future< void > | release (int32_t permits) override |
boost::future< int32_t > | drain_permits () override |
Definition at line 1248 of file cp.h.
◆ sessionless_semaphore()
hazelcast::cp::sessionless_semaphore::sessionless_semaphore |
( |
const std::string & | proxy_name, |
|
|
client::spi::ClientContext * | context, |
|
|
const raft_group_id & | group_id, |
|
|
const std::string & | object_name, |
|
|
internal::session::proxy_session_manager & | session_manager ) |
Definition at line 1050 of file cp.cpp.
1056 : counting_semaphore(proxy_name,
1057 context,
1058 group_id,
1059 object_name,
1060 session_manager)
1061{}
◆ acquire()
boost::future< void > hazelcast::cp::sessionless_semaphore::acquire |
( |
int32_t | permits | ) |
|
|
override |
Definition at line 1064 of file cp.cpp.
1065{
1066 util::Preconditions::check_positive(permits,
1067 "permits must be positive number.");
1068
1069 return to_void_future(
1070 do_try_acquire(permits, std::chrono::milliseconds(-1)));
1071}
◆ do_change_permits()
boost::future< void > hazelcast::cp::sessionless_semaphore::do_change_permits |
( |
int32_t | delta | ) |
|
|
overrideprotected |
Definition at line 1155 of file cp.cpp.
1156{
1157 auto cluster_wide_threadId = get_thread_id();
1158 auto invocation_uid =
1159 get_context().get_hazelcast_client_implementation()->random_uuid();
1160 auto request = client::protocol::codec::semaphore_change_encode(
1161 group_id_,
1162 object_name_,
1163 internal::session::proxy_session_manager::NO_SESSION_ID,
1164 cluster_wide_threadId,
1165 invocation_uid,
1166 delta);
1167 return to_void_future(client::spi::impl::ClientInvocation::create(
1168 context_, request, object_name_)
1169 ->invoke());
1170}
◆ drain_permits()
boost::future< int32_t > hazelcast::cp::sessionless_semaphore::drain_permits |
( |
| ) |
|
|
override |
Definition at line 1138 of file cp.cpp.
1139{
1140 auto cluster_wide_threadId = get_thread_id();
1141 auto invocation_uid =
1142 get_context().get_hazelcast_client_implementation()->random_uuid();
1143 auto request = client::protocol::codec::semaphore_drain_encode(
1144 group_id_,
1145 object_name_,
1146 internal::session::proxy_session_manager::NO_SESSION_ID,
1147 cluster_wide_threadId,
1148 invocation_uid);
1149 return decode<int32_t>(client::spi::impl::ClientInvocation::create(
1150 context_, request, object_name_)
1151 ->invoke());
1152}
◆ get_thread_id()
int64_t hazelcast::cp::sessionless_semaphore::get_thread_id |
( |
| ) |
|
|
overrideprotected |
Definition at line 1132 of file cp.cpp.
1133{
1134 return session_manager_.get_or_create_unique_thread_id(group_id_);
1135}
◆ release()
boost::future< void > hazelcast::cp::sessionless_semaphore::release |
( |
int32_t | permits | ) |
|
|
override |
Definition at line 1122 of file cp.cpp.
1123{
1124 util::Preconditions::check_positive(permits, "Permits must be positive!");
1125 auto thread_id = get_thread_id();
1126 return do_release(permits,
1127 thread_id,
1128 internal::session::proxy_session_manager::NO_SESSION_ID);
1129}
◆ try_acquire_for_millis()
boost::future< bool > hazelcast::cp::sessionless_semaphore::try_acquire_for_millis |
( |
int32_t | permits, |
|
|
std::chrono::milliseconds | timeout ) |
|
overrideprotected |
Definition at line 1110 of file cp.cpp.
1112{
1113 util::Preconditions::check_positive(permits, "Permits must be positive!");
1114
1115 return do_try_acquire(permits,
1116 timeout > std::chrono::milliseconds::zero()
1117 ? timeout
1118 : std::chrono::milliseconds::zero());
1119}
The documentation for this class was generated from the following files:
- hazelcast/include/hazelcast/cp/cp.h
- hazelcast/src/hazelcast/cp/cp.cpp