Hazelcast C++ Client
Hazelcast C++ Client Library
Loading...
Searching...
No Matches
hazelcast::cp::sessionless_semaphore Class Reference
Inheritance diagram for hazelcast::cp::sessionless_semaphore:

Public Member Functions

 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

Protected Member Functions

boost::future< bool > try_acquire_for_millis (int32_t permits, std::chrono::milliseconds timeout) override
int64_t get_thread_id () override
boost::future< void > do_change_permits (int32_t delta) override

Detailed Description

Definition at line 1248 of file cp.h.

Constructor & Destructor Documentation

◆ 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{}

Member Function Documentation

◆ 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