1 #ifndef CYCLUS_SRC_TRADER_MANAGEMENT_H_ 2 #define CYCLUS_SRC_TRADER_MANAGEMENT_H_ 14 inline static std::set<typename RequestPortfolio<T>::Ptr>
16 throw StateError(
"Non-specialized version of QueryRequests not supported");
20 inline std::set<RequestPortfolio<Material>::Ptr>
22 return t->GetMatlRequests();
26 inline std::set<RequestPortfolio<Product>::Ptr>
28 return t->GetProductRequests();
32 inline static std::set<typename BidPortfolio<T>::Ptr>
34 throw StateError(
"Non-specialized version of QueryBids not supported");
38 inline std::set<BidPortfolio<Material>::Ptr>
40 return t->GetMatlBids(map);
44 inline std::set<BidPortfolio<Product>::Ptr>
46 return t->GetProductBids(map);
52 const std::vector<
Trade<T> >& trades,
53 std::vector< std::pair<
Trade<T>,
typename T::Ptr> >& responses) {
55 "PopulateTradeResponses not supported");
61 const std::vector< Trade<Material> >& trades,
62 std::vector<std::pair<Trade<Material>,
Material::Ptr> >& responses) {
63 dynamic_cast<Trader*
>(trader)->GetMatlTrades(trades, responses);
69 const std::vector< Trade<Product> >& trades,
70 std::vector<std::pair<Trade<Product>,
Product::Ptr> >& responses) {
71 trader->GetProductTrades(trades, responses);
77 const std::vector< std::pair<
Trade<T>,
typename T::Ptr> >& responses) {
78 throw StateError(
"Non-specialized version of AcceptTrades not supported");
85 dynamic_cast<Trader*
>(trader)->AcceptMatlTrades(responses);
97 #endif // CYCLUS_SRC_TRADER_MANAGEMENT_H_ std::map< std::string, std::vector< Request< T > * > > type
For failed object state expectations.
static std::set< typename BidPortfolio< T >::Ptr > QueryBids(Trader *t, typename CommodMap< T >::type &map)
boost::shared_ptr< Material > Ptr
void PopulateTradeResponses< Material >(Trader *trader, const std::vector< Trade< Material > > &trades, std::vector< std::pair< Trade< Material >, Material::Ptr > > &responses)
A simple API for agents that wish to exchange resources in the simulation.
boost::shared_ptr< Product > Ptr
static std::set< typename RequestPortfolio< T >::Ptr > QueryRequests(Trader *t)
virtual void AcceptProductTrades(const std::vector< std::pair< Trade< Product >, Product::Ptr > > &responses)
default implementation for product trade acceptance
static void PopulateTradeResponses(Trader *trader, const std::vector< Trade< T > > &trades, std::vector< std::pair< Trade< T >, typename T::Ptr > > &responses)
static void AcceptTrades(Trader *trader, const std::vector< std::pair< Trade< T >, typename T::Ptr > > &responses)
taken directly from OsiSolverInterface.cpp on 2/17/14 from https://projects.coin-or.org/Osi/browser/trunk.
A Trade is a simple container that associates a request for a resource with a bid for that resource...
std::set< BidPortfolio< Product >::Ptr > QueryBids< Product >(Trader *t, CommodMap< Product >::type &map)
std::set< BidPortfolio< Material >::Ptr > QueryBids< Material >(Trader *t, CommodMap< Material >::type &map)
std::set< RequestPortfolio< Material >::Ptr > QueryRequests< Material >(Trader *t)
void PopulateTradeResponses< Product >(Trader *trader, const std::vector< Trade< Product > > &trades, std::vector< std::pair< Trade< Product >, Product::Ptr > > &responses)
std::set< RequestPortfolio< Product >::Ptr > QueryRequests< Product >(Trader *t)