本文整理汇总了C++中Consumer::charge方法的典型用法代码示例。如果您正苦于以下问题:C++ Consumer::charge方法的具体用法?C++ Consumer::charge怎么用?C++ Consumer::charge使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Consumer
的用法示例。
在下文中一共展示了Consumer::charge方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testCharges
void testCharges (beast::Journal j)
{
testcase ("Charge");
TestLogic logic (j);
{
beast::IP::Endpoint address (beast::IP::Endpoint::from_string ("207.127.82.1"));
Consumer c (logic.newInboundEndpoint (address));
Charge fee (1000);
j.info <<
"Charging " << c.to_string() << " " << fee << " per second";
c.charge (fee);
for (int i = 0; i < 128; ++i)
{
j.info <<
"Time= " << logic.clock().now().time_since_epoch() <<
", Balance = " << c.balance();
logic.advance();
}
}
{
beast::IP::Endpoint address (beast::IP::Endpoint::from_string ("207.127.82.2"));
Consumer c (logic.newInboundEndpoint (address));
Charge fee (1000);
j.info <<
"Charging " << c.to_string() << " " << fee << " per second";
for (int i = 0; i < 128; ++i)
{
c.charge (fee);
j.info <<
"Time= " << logic.clock().now().time_since_epoch() <<
", Balance = " << c.balance();
logic.advance();
}
}
pass();
}
示例2: testDrop
void testDrop (beast::Journal j)
{
testcase ("Warn/drop");
TestLogic logic (j);
Charge const fee (dropThreshold + 1);
beast::IP::Endpoint const addr (
beast::IP::Endpoint::from_string ("207.127.82.2"));
{
Consumer c (logic.newInboundEndpoint (addr));
// Create load until we get a warning
int n = 10000;
while (--n >= 0)
{
if (n == 0)
{
fail ("Loop count exceeded without warning");
return;
}
if (c.charge (fee) == warn)
{
pass ();
break;
}
++logic.clock ();
}
// Create load until we get dropped
while (--n >= 0)
{
if (n == 0)
{
fail ("Loop count exceeded without dropping");
return;
}
if (c.charge (fee) == drop)
{
// Disconnect abusive Consumer
expect (c.disconnect ());
break;
}
++logic.clock ();
}
}
// Make sure the consumer is on the blacklist for a while.
{
Consumer c (logic.newInboundEndpoint (addr));
logic.periodicActivity();
if (c.disposition () != drop)
{
fail ("Dropped consumer not put on blacklist");
return;
}
}
// Makes sure the Consumer is eventually removed from blacklist
bool readmitted = false;
{
// Give Consumer time to become readmitted. Should never
// exceed expiration time.
std::size_t n (secondsUntilExpiration + 1);
while (--n > 0)
{
++logic.clock ();
logic.periodicActivity();
Consumer c (logic.newInboundEndpoint (addr));
if (c.disposition () != drop)
{
readmitted = true;
break;
}
}
}
if (readmitted == false)
{
fail ("Dropped Consumer left on blacklist too long");
return;
}
pass();
}
示例3: testDrop
void testDrop (beast::Journal j)
{
testcase ("Warn/drop");
TestLogic logic (j);
Charge const fee (dropThreshold + 1);
beast::IP::Endpoint const addr (
beast::IP::Endpoint::from_string ("207.127.82.2"));
{
Consumer c (logic.newInboundEndpoint (addr));
// Create load until we get a warning
for (std::size_t n (maxLoopCount); true; --n)
{
if (n == 0)
{
fail ("Loop count exceeded without warning");
return;
}
if (c.charge (fee) == warn)
{
pass ();
break;
}
++logic.clock ();
}
// Create load until we get dropped
for (std::size_t n (maxLoopCount); true; --n)
{
if (n == 0)
{
fail ("Loop count exceeded without dropping");
return;
}
if (c.charge (fee) == drop)
{
pass ();
break;
}
++logic.clock ();
}
}
{
Consumer c (logic.newInboundEndpoint (addr));
expect (c.disconnect ());
}
for (std::size_t n (maxLoopCount); true; --n)
{
Consumer c (logic.newInboundEndpoint (addr));
if (n == 0)
{
fail ("Loop count exceeded without expiring black list");
return;
}
if (c.disposition() != drop)
{
pass ();
break;
}
}
}