Skip to content

Commit 002c4da

Browse files
authored
Merge pull request #1009 from bitshares/jmj_issue_762
Refactor cancel_all_subscriptions (Issue #762)
2 parents 2206369 + ba74ba2 commit 002c4da

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

libraries/app/database_api.cpp

+15-13
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class database_api_impl : public std::enable_shared_from_this<database_api_impl>
6161
void set_subscribe_callback( std::function<void(const variant&)> cb, bool notify_remove_create );
6262
void set_pending_transaction_callback( std::function<void(const variant&)> cb );
6363
void set_block_applied_callback( std::function<void(const variant& block_id)> cb );
64-
void cancel_all_subscriptions();
64+
void cancel_all_subscriptions(bool reset_callback, bool reset_market_subscriptions);
6565

6666
// Blocks and transactions
6767
optional<block_header> get_block_header(uint32_t block_num)const;
@@ -358,16 +358,10 @@ void database_api_impl::set_subscribe_callback( std::function<void(const variant
358358
"Subscribing to universal object creation and removal is disallowed in this server." );
359359
}
360360

361+
cancel_all_subscriptions(false, false);
362+
361363
_subscribe_callback = cb;
362364
_notify_remove_create = notify_remove_create;
363-
_subscribed_accounts.clear();
364-
365-
static fc::bloom_parameters param;
366-
param.projected_element_count = 10000;
367-
param.false_positive_probability = 1.0/100;
368-
param.maximum_size = 1024*8*8*2;
369-
param.compute_optimal_parameters();
370-
_subscribe_filter = fc::bloom_filter(param);
371365
}
372366

373367
void database_api::set_pending_transaction_callback( std::function<void(const variant&)> cb )
@@ -392,13 +386,21 @@ void database_api_impl::set_block_applied_callback( std::function<void(const var
392386

393387
void database_api::cancel_all_subscriptions()
394388
{
395-
my->cancel_all_subscriptions();
389+
my->cancel_all_subscriptions(true, true);
396390
}
397391

398-
void database_api_impl::cancel_all_subscriptions()
392+
void database_api_impl::cancel_all_subscriptions( bool reset_callback, bool reset_market_subscriptions )
399393
{
400-
set_subscribe_callback( std::function<void(const fc::variant&)>(), true);
401-
_market_subscriptions.clear();
394+
if ( reset_callback )
395+
_subscribe_callback = std::function<void(const fc::variant&)>();
396+
397+
if ( reset_market_subscriptions )
398+
_market_subscriptions.clear();
399+
400+
_notify_remove_create = false;
401+
_subscribed_accounts.clear();
402+
static fc::bloom_parameters param(10000, 1.0/100, 1024*8*8*2);
403+
_subscribe_filter = fc::bloom_filter(param);
402404
}
403405

404406
//////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)