RTBKit  0.9
Open-source framework to create real-time ad bidding systems.
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator
Public Member Functions | Public Attributes
RTBKIT::RouterStack Struct Reference

#include <router_stack.h>

Inheritance diagram for RTBKIT::RouterStack:
Datacratic::ServiceBase Datacratic::EventRecorder

List of all members.

Public Member Functions

 RouterStack (std::shared_ptr< ServiceProxies > services, const std::string &serviceName="routerStack", double secondsUntilLossAssumed=2.0)
void init ()
virtual void start (boost::function< void()> onStop=boost::function< void()>())
virtual void sleepUntilIdle ()
virtual void shutdown ()
virtual size_t numNonIdle () const
void submitAuction (const std::shared_ptr< Auction > &auction, const Id &adSpotId, const Auction::Response &response)
void notifyFinishedAuction (const Id &auctionId)
int numAuctionsInProgress ()
Json::Value getStats () const
void injectWin (const Id &auctionId, const Id &adSpotId, Amount winPrice, Date timestamp, const JsonHolder &winMeta, const UserIds &uids, const AccountKey &account, Date bidTimestamp)
void injectLoss (const Id &auctionId, const Id &adSpotId, Date timestamp, const JsonHolder &lossMeta, const AccountKey &account, Date bidTimestamp)
void injectCampaignEvent (const std::string &label, const Id &auctionId, const Id &spotId, Date timestamp, const JsonHolder &eventMeta, const UserIds &uids)
void notifyFinishedSpot (const Id &auctionId, const Id &adSpotId)
void initStatePersistence (const std::string &path)
void addBudget (const AccountKey &account, CurrencyPool amount)
void setBudget (const AccountKey &account, CurrencyPool amount)
void topupTransfer (const AccountKey &account, CurrencyPool amount)

Public Attributes

Router router
Redis::RedisTemporaryServer redis
MasterBanker masterBanker
SlaveBudgetController budgetController
PostAuctionLoop postAuctionLoop
AgentConfigurationService config
MonitorEndpoint monitor
bool initialized

Detailed Description

The Router Stack is a Core Router, a Post Auction Loop and a Banker stuck together. This is mostly used for where we need an integrated component (simulations, etc); normally they would be run separately.

Todo:
There's a lot of commonalities here between the rtbkit_integration_test's Components class.

Definition at line 34 of file router_stack.h.


Member Function Documentation

void RTBKIT::RouterStack::addBudget ( const AccountKey account,
CurrencyPool  amount 
)

Add budget to the given account. Returns the new accounting info for the account.

Definition at line 152 of file router_stack.cc.

void RTBKIT::RouterStack::initStatePersistence ( const std::string &  path) [inline]

Place where the state persistence should be put.

Definition at line 145 of file router_stack.h.

void RTBKIT::RouterStack::injectCampaignEvent ( const std::string &  label,
const Id auctionId,
const Id spotId,
Date  timestamp,
const JsonHolder eventMeta,
const UserIds uids 
) [inline]

Inject an IMPRESSION into the router, to be passed on to the campaign that bid on it.

If the spot ID is empty, then the click will be sent to all campaigns that had a win on the auction.

Definition at line 111 of file router_stack.h.

void RTBKIT::RouterStack::injectLoss ( const Id auctionId,
const Id adSpotId,
Date  timestamp,
const JsonHolder lossMeta,
const AccountKey account,
Date  bidTimestamp 
) [inline]

Inject a LOSS into the router. Thread safe and asynchronous. Note that this method ONLY is useful for simulations; otherwise losses are implicit.

Definition at line 94 of file router_stack.h.

void RTBKIT::RouterStack::injectWin ( const Id auctionId,
const Id adSpotId,
Amount  winPrice,
Date  timestamp,
const JsonHolder winMeta,
const UserIds uids,
const AccountKey account,
Date  bidTimestamp 
) [inline]

Inject a WIN into the router. Thread safe and asynchronous.

Definition at line 76 of file router_stack.h.

void RTBKIT::RouterStack::notifyFinishedSpot ( const Id auctionId,
const Id adSpotId 
) [inline]

Notify the router that the given auction/spot will never receive another message and should be forgotten. This is mostly for the simulation.

This message is the preferred way for a simulation to notify the router that things are finished; normally auctions finish by themselves (once submitted) but the auction/spot combination stays alive much longer waiting for further messages. You should only call finishedAuction in rare cases when you want to cancel an auction before bidding has finished.

If the auction doesn't exist, the message will be silently ignored.

There is no penalty for not calling this, apart from potentially having to wait one hour before the simulation decides that it is finished.

Definition at line 139 of file router_stack.h.

void RTBKIT::RouterStack::setBudget ( const AccountKey account,
CurrencyPool  amount 
)

Set the budget for the given account. Returns the new accounting info for the account.

Definition at line 160 of file router_stack.cc.

Sleep until the router is idle (there are no more auctions and all connections are idle).

Definition at line 114 of file router_stack.cc.

void RTBKIT::RouterStack::start ( boost::function< void()>  onStop = boost::function<void ()>()) [virtual]

Start the router running in a separate thread. The given lambda will be called when the thread is stopped.

Definition at line 102 of file router_stack.cc.


The documentation for this struct was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator