本文整理汇总了C++中request::get_name方法的典型用法代码示例。如果您正苦于以下问题:C++ request::get_name方法的具体用法?C++ request::get_name怎么用?C++ request::get_name使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类request
的用法示例。
在下文中一共展示了request::get_name方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: bind_prefix
response component_namespace::bind_prefix(
request const& req
, error_code& ec
)
{ // {{{ bind_prefix implementation
// parameters
std::string key = req.get_name();
boost::uint32_t prefix = req.get_locality_id();
mutex_type::scoped_lock l(mutex_);
component_id_table_type::left_map::iterator cit = component_ids_.left.find(key)
, cend = component_ids_.left.end();
// This is the first request, so we use the type counter, and then
// increment it.
if (component_ids_.left.find(key) == cend)
{
if (HPX_UNLIKELY(!util::insert_checked(component_ids_.left.insert(
std::make_pair(key, type_counter)), cit)))
{
l.unlock();
HPX_THROWS_IF(ec, lock_error
, "component_namespace::bind_prefix"
, "component id table insertion failed due to a locking "
"error or memory corruption")
return response();
}
// If the insertion succeeded, we need to increment the type
// counter.
++type_counter;
}
示例2: bind_name
response component_namespace::bind_name(
request const& req
, error_code& ec
)
{ // {{{ bind_name implementation
// parameters
std::string key = req.get_name();
std::unique_lock<mutex_type> l(mutex_);
component_id_table_type::left_map::iterator it = component_ids_.left.find(key)
, end = component_ids_.left.end();
// If the name is not in the table, register it (this is only done so
// we can implement a backwards compatible get_component_id).
if (it == end)
{
if (HPX_UNLIKELY(!util::insert_checked(component_ids_.left.insert(
std::make_pair(key, type_counter)), it)))
{
l.unlock();
HPX_THROWS_IF(ec, lock_error
, "component_namespace::bind_name"
, "component id table insertion failed due to a locking "
"error or memory corruption");
return response();
}
// If the insertion succeeded, we need to increment the type
// counter.
++type_counter;
}
LAGAS_(info) << (boost::format(
"component_namespace::bind_name, key(%1%), ctype(%2%)")
% key % it->second);
if (&ec != &throws)
ec = make_success_code();
return response(component_ns_bind_name, it->second);
} // }}}
示例3: resolve
response symbol_namespace::resolve(
request const& req
, error_code& ec
)
{ // {{{ resolve implementation
// parameters
std::string key = req.get_name();
std::unique_lock<mutex_type> l(mutex_);
gid_table_type::iterator it = gids_.find(key);
gid_table_type::iterator end = gids_.end();
if (it == end)
{
LAGAS_(info) << (boost::format(
"symbol_namespace::resolve, key(%1%), response(no_success)")
% key);
if (&ec != &throws)
ec = make_success_code();
return response(symbol_ns_resolve
, naming::invalid_gid
, no_success);
}
if (&ec != &throws)
ec = make_success_code();
// hold on to gid before unlocking the map
std::shared_ptr<naming::gid_type> current_gid(it->second);
l.unlock();
naming::gid_type gid = naming::detail::split_gid_if_needed(*current_gid).get();
LAGAS_(info) << (boost::format(
"symbol_namespace::resolve, key(%1%), gid(%2%)")
% key % gid);
return response(symbol_ns_resolve, gid);
} // }}}
示例4: unbind
response component_namespace::unbind(
request const& req
, error_code& ec
)
{ // {{{ unbind implementation
// parameters
std::string key = req.get_name();
std::lock_guard<mutex_type> l(mutex_);
component_id_table_type::left_map::iterator it = component_ids_.left.find(key);
// REVIEW: Should this be an error?
if (it == component_ids_.left.end())
{
LAGAS_(info) << (boost::format(
"component_namespace::unbind, key(%1%), response(no_success)")
% key);
if (&ec != &throws)
ec = make_success_code();
return response(component_ns_unbind_name, no_success);
}
// REVIEW: If there are no localities with this type, should we throw
// an exception here?
factories_.erase(it->second);
component_ids_.left.erase(it);
LAGAS_(info) << (boost::format(
"component_namespace::unbind, key(%1%)")
% key);
if (&ec != &throws)
ec = make_success_code();
return response(component_ns_unbind_name);
} // }}}
示例5: unbind
response symbol_namespace::unbind(
request const& req
, error_code& ec
)
{ // {{{ unbind implementation
// parameters
std::string key = req.get_name();
mutex_type::scoped_lock l(mutex_);
gid_table_type::iterator it = gids_.find(key)
, end = gids_.end();
if (it == end)
{
LAGAS_(info) << (boost::format(
"symbol_namespace::unbind, key(%1%), response(no_success)")
% key);
if (&ec != &throws)
ec = make_success_code();
return response(symbol_ns_unbind, naming::invalid_gid, no_success);
}
const naming::gid_type gid = it->second;
gids_.erase(it);
LAGAS_(info) << (boost::format(
"symbol_namespace::unbind, key(%1%), gid(%2%)")
% key % gid);
if (&ec != &throws)
ec = make_success_code();
return response(symbol_ns_unbind, gid);
} // }}}
示例6: resolve
response symbol_namespace::resolve(
request const& req
, error_code& ec
)
{ // {{{ resolve implementation
// parameters
std::string key = req.get_name();
mutex_type::scoped_lock l(mutex_);
gid_table_type::iterator it = gids_.find(key)
, end = gids_.end();
if (it == end)
{
LAGAS_(info) << (boost::format(
"symbol_namespace::resolve, key(%1%), response(no_success)")
% key);
if (&ec != &throws)
ec = make_success_code();
return response(symbol_ns_resolve
, naming::invalid_gid
, no_success);
}
if (&ec != &throws)
ec = make_success_code();
naming::gid_type gid;
// Is this entry reference counted?
if (naming::get_credit_from_gid(it->second) != 0)
{
gid = naming::split_credits_for_gid(it->second);
LAGAS_(debug) << (boost::format(
"symbol_namespace::resolve, split credits for entry, "
"key(%1%), entry(%2%), gid(%3%)")
% key % it->second % gid);
// Credit exhaustion - we need to get more.
if (0 == naming::get_credit_from_gid(gid))
{
BOOST_ASSERT(1 == naming::get_credit_from_gid(it->second));
naming::get_agas_client().incref(gid, 2 * HPX_INITIAL_GLOBALCREDIT);
naming::add_credit_to_gid(gid, HPX_INITIAL_GLOBALCREDIT);
naming::add_credit_to_gid(it->second, HPX_INITIAL_GLOBALCREDIT);
LAGAS_(debug) << (boost::format(
"symbol_namespace::resolve, incremented entry credits, "
"key(%1%), entry(%2%), gid(%3%)")
% key % it->second % gid);
}
}
else
gid = it->second;
LAGAS_(info) << (boost::format(
"symbol_namespace::resolve, key(%1%), gid(%2%)")
% key % gid);
return response(symbol_ns_resolve, gid);
} // }}}
示例7: on_event
response symbol_namespace::on_event(
request const& req
, error_code& ec
)
{ // {{{ on_event implementation
std::string name = req.get_name();
namespace_action_code evt = req.get_on_event_event();
bool call_for_past_events = req.get_on_event_call_for_past_event();
hpx::id_type lco = req.get_on_event_result_lco();
if (evt != symbol_ns_bind)
{
HPX_THROWS_IF(ec, bad_parameter,
"addressing_service::on_symbol_namespace_event",
"invalid event type");
return response(symbol_ns_on_event, no_success);
}
std::unique_lock<mutex_type> l(mutex_);
bool handled = false;
if (call_for_past_events)
{
gid_table_type::iterator it = gids_.find(name);
if (it != gids_.end())
{
// hold on to entry while map is unlocked
std::shared_ptr<naming::gid_type> current_gid(it->second);
// split the credit as the receiving end will expect to keep the
// object alive
{
util::unlock_guard<std::unique_lock<mutex_type> > ul(l);
naming::gid_type new_gid = naming::detail::split_gid_if_needed(
*current_gid).get();
// trigger the lco
handled = true;
// trigger LCO as name is already bound to an id
set_lco_value(lco, std::move(new_gid));
}
}
}
if (!handled)
{
std::pair<std::string, namespace_action_code> key(name, evt);
on_event_data_map_type::iterator it = on_event_data_.insert(
on_event_data_map_type::value_type(std::move(key), lco));
l.unlock();
if (it == on_event_data_.end())
{
LAGAS_(info) << (boost::format(
"symbol_namespace::on_event, name(%1%), response(no_success)")
% name);
if (&ec != &throws)
ec = make_success_code();
return response(symbol_ns_on_event, no_success);
}
}
else
{
l.unlock();
}
LAGAS_(info) << "symbol_namespace::on_event";
if (&ec != &throws)
ec = make_success_code();
return response(symbol_ns_on_event);
} // }}}
示例8: bind_prefix
response component_namespace::bind_prefix(
request const& req
, error_code& ec
)
{ // {{{ bind_prefix implementation
// parameters
std::string key = req.get_name();
boost::uint32_t prefix = req.get_locality_id();
std::unique_lock<mutex_type> l(mutex_);
component_id_table_type::left_map::iterator cit = component_ids_.left.find(key)
, cend = component_ids_.left.end();
// This is the first request, so we use the type counter, and then
// increment it.
if (component_ids_.left.find(key) == cend)
{
if (HPX_UNLIKELY(!util::insert_checked(component_ids_.left.insert(
std::make_pair(key, type_counter)), cit)))
{
l.unlock();
HPX_THROWS_IF(ec, lock_error
, "component_namespace::bind_prefix"
, "component id table insertion failed due to a locking "
"error or memory corruption");
return response();
}
// If the insertion succeeded, we need to increment the type
// counter.
++type_counter;
}
factory_table_type::iterator fit = factories_.find(cit->second)
, fend = factories_.end();
if (fit != fend)
{
prefixes_type& prefixes = fit->second;
prefixes_type::iterator pit = prefixes.find(prefix);
if (pit != prefixes.end())
{
// Duplicate type registration for this locality.
l.unlock();
HPX_THROWS_IF(ec, duplicate_component_id
, "component_namespace::bind_prefix"
, boost::str(boost::format(
"component id is already registered for the given "
"locality, key(%1%), prefix(%2%), ctype(%3%)")
% key % prefix % cit->second));
return response();
}
fit->second.insert(prefix);
// First registration for this locality, we still return no_success to
// convey the fact that another locality already registered this
// component type.
LAGAS_(info) << (boost::format(
"component_namespace::bind_prefix, key(%1%), prefix(%2%), "
"ctype(%3%), response(no_success)")
% key % prefix % cit->second);
if (&ec != &throws)
ec = make_success_code();
return response(component_ns_bind_prefix
, cit->second
, no_success);
}
// Instead of creating a temporary and then inserting it, we insert
// an empty set, then put the prefix into said set. This should
// prevent a copy, though most compilers should be able to optimize
// this without our help.
if (HPX_UNLIKELY(!util::insert_checked(factories_.insert(
std::make_pair(cit->second, prefixes_type())), fit)))
{
l.unlock();
HPX_THROWS_IF(ec, lock_error
, "component_namespace::bind_prefix"
, "factory table insertion failed due to a locking "
"error or memory corruption");
return response();
}
fit->second.insert(prefix);
LAGAS_(info) << (boost::format(
"component_namespace::bind_prefix, key(%1%), prefix(%2%), ctype(%3%)")
% key % prefix % cit->second);
if (&ec != &throws)
ec = make_success_code();
//.........这里部分代码省略.........