adding wallet api to return the market history

This commit is contained in:
Daniel Larimer 2015-06-25 09:38:31 -04:00
parent e7ec05f545
commit a518c37c9e
3 changed files with 16 additions and 1 deletions

View file

@ -73,6 +73,7 @@ struct operation_process_fill_order
void operator()( const fill_order_operation& o )const void operator()( const fill_order_operation& o )const
{ {
ilog( "processing ${o}", ("o",o) );
const auto& buckets = _plugin.tracked_buckets(); const auto& buckets = _plugin.tracked_buckets();
auto& db = _plugin.database(); auto& db = _plugin.database();
const auto& bucket_idx = db.get_index_type<bucket_index>(); const auto& bucket_idx = db.get_index_type<bucket_index>();
@ -91,7 +92,10 @@ struct operation_process_fill_order
* the base > quote * the base > quote
*/ */
if( key.base > key.quote ) if( key.base > key.quote )
{
ilog( " skipping because base > quote" );
continue; continue;
}
price trade_price = o.pays / o.receives; price trade_price = o.pays / o.receives;
@ -102,7 +106,7 @@ struct operation_process_fill_order
auto itr = by_key_idx.find( key ); auto itr = by_key_idx.find( key );
if( itr == by_key_idx.end() ) if( itr == by_key_idx.end() )
{ // create new bucket { // create new bucket
db.create<bucket_object>( [&]( bucket_object& b ){ const auto& obj = db.create<bucket_object>( [&]( bucket_object& b ){
b.key = key; b.key = key;
b.quote_volume += trade_price.quote.amount; b.quote_volume += trade_price.quote.amount;
b.open_base = trade_price.base.amount; b.open_base = trade_price.base.amount;
@ -114,9 +118,11 @@ struct operation_process_fill_order
b.low_base = b.close_base; b.low_base = b.close_base;
b.low_quote = b.close_quote; b.low_quote = b.close_quote;
}); });
wlog( " creating bucket ${b}", ("b",obj) );
} }
else else
{ // update existing bucket { // update existing bucket
wlog( " before updating bucket ${b}", ("b",*itr) );
db.modify( *itr, [&]( bucket_object& b ){ db.modify( *itr, [&]( bucket_object& b ){
b.base_volume += trade_price.base.amount; b.base_volume += trade_price.base.amount;
b.quote_volume += trade_price.quote.amount; b.quote_volume += trade_price.quote.amount;
@ -133,6 +139,7 @@ struct operation_process_fill_order
b.low_quote = b.close_quote; b.low_quote = b.close_quote;
} }
}); });
wlog( " after bucket bucket ${b}", ("b",*itr) );
} }
if( max_history != 0 ) if( max_history != 0 )
@ -146,6 +153,7 @@ struct operation_process_fill_order
itr->key.seconds == bucket && itr->key.seconds == bucket &&
itr->key.open < cutoff ) itr->key.open < cutoff )
{ {
elog( " removing old bucket ${b}", ("b", *itr) );
auto old_itr = itr; auto old_itr = itr;
++itr; ++itr;
db.remove( *old_itr ); db.remove( *old_itr );

View file

@ -113,6 +113,7 @@ class wallet_api
vector<asset> list_account_balances(const string& id); vector<asset> list_account_balances(const string& id);
vector<asset_object> list_assets(const string& lowerbound, uint32_t limit)const; vector<asset_object> list_assets(const string& lowerbound, uint32_t limit)const;
vector<operation_history_object> get_account_history(string name, int limit)const; vector<operation_history_object> get_account_history(string name, int limit)const;
vector<bucket_object> get_market_history(string symbol, string symbol2, uint32_t bucket)const;
vector<limit_order_object> get_limit_orders(string a, string b, uint32_t limit)const; vector<limit_order_object> get_limit_orders(string a, string b, uint32_t limit)const;
vector<call_order_object> get_call_orders(string a, uint32_t limit)const; vector<call_order_object> get_call_orders(string a, uint32_t limit)const;
vector<force_settlement_object> get_settle_orders(string a, uint32_t limit)const; vector<force_settlement_object> get_settle_orders(string a, uint32_t limit)const;
@ -362,6 +363,7 @@ FC_API( graphene::wallet::wallet_api,
(get_block) (get_block)
(get_account_count) (get_account_count)
(get_account_history) (get_account_history)
(get_market_history)
(get_global_properties) (get_global_properties)
(get_dynamic_global_properties) (get_dynamic_global_properties)
(get_object) (get_object)

View file

@ -1693,6 +1693,11 @@ vector<operation_history_object> wallet_api::get_account_history(string name, in
return my->_remote_hist->get_account_history(get_account(name).get_id(), operation_history_id_type(), limit, operation_history_id_type()); return my->_remote_hist->get_account_history(get_account(name).get_id(), operation_history_id_type(), limit, operation_history_id_type());
} }
vector<bucket_object> wallet_api::get_market_history( string symbol1, string symbol2, uint32_t bucket )const
{
return my->_remote_hist->get_market_history( get_asset_id(symbol1), get_asset_id(symbol2), bucket, fc::time_point_sec(), fc::time_point::now() );
}
vector<limit_order_object> wallet_api::get_limit_orders(string a, string b, uint32_t limit)const vector<limit_order_object> wallet_api::get_limit_orders(string a, string b, uint32_t limit)const
{ {
return my->_remote_db->get_limit_orders(get_asset(a).id, get_asset(b).id, limit); return my->_remote_db->get_limit_orders(get_asset(a).id, get_asset(b).id, limit);