本文整理汇总了C++中ActionSet::set方法的典型用法代码示例。如果您正苦于以下问题:C++ ActionSet::set方法的具体用法?C++ ActionSet::set怎么用?C++ ActionSet::set使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ActionSet
的用法示例。
在下文中一共展示了ActionSet::set方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: xrule_impl
void XRuleIP::xrule_impl(
IronBee::Transaction tx,
ActionSet& actions
)
{
const char *remote_ip = tx.effective_remote_ip_string();
ib_ip4_t ipv4;
ib_ip6_t ipv6;
ib_log_debug_tx(tx.ib(), "Checking IP Access for %s", remote_ip);
// Check IP lists.
if (remote_ip == NULL) {
BOOST_THROW_EXCEPTION(
IronBee::einval()
<< IronBee::errinfo_what("No remote IP available.")
);
}
else if (IB_OK == ib_ip4_str_to_ip(remote_ip, &ipv4)) {
const ib_ipset4_entry_t *entry;
ib_status_t rc;
rc = ib_ipset4_query(&(m_ipset4), ipv4, NULL, &entry, NULL);
if (rc == IB_OK) {
ib_log_debug_tx(tx.ib(), "IP matched %s", remote_ip);
action_ptr action =
IronBee::data_to_value<action_ptr>(entry->data);
actions.set(action);
}
else {
ib_log_debug_tx(
tx.ib(),
"IP set is empty or does not include %s",
remote_ip);
}
}
else if (IB_OK == ib_ip6_str_to_ip(remote_ip, &ipv6)) {
const ib_ipset6_entry_t *entry;
ib_status_t rc;
rc = ib_ipset6_query(&(m_ipset6), ipv6, NULL, &entry, NULL);
if (rc == IB_OK) {
ib_log_debug_tx(tx.ib(), "IP matched %s", remote_ip);
action_ptr action =
IronBee::data_to_value<action_ptr>(entry->data);
actions.set(action);
}
else {
ib_log_debug_tx(
tx.ib(),
"IP set is empty or does not include %s",
remote_ip);
}
}
else {
BOOST_THROW_EXCEPTION(
IronBee::enoent()
<< IronBee::errinfo_what("Cannot convert IP to v4 or v6.")
);
}
}