public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
* [Bitcoin-development] Notifications from client/wallet
@ 2011-07-14  5:19 John Smith
  2011-07-14  9:10 ` Pieter Wuille
  2011-07-14 14:13 ` Matt Corallo
  0 siblings, 2 replies; 3+ messages in thread
From: John Smith @ 2011-07-14  5:19 UTC (permalink / raw)
  To: Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 1783 bytes --]

Hello all,

I'd like to add notifications to the client and wallet, to decouple UI and
core communication, and especially so that UIs no longer have to poll for
changes.

I propose to use the boost::signal mechanism for that. It is basically a
glorified callback system, but allows decoupled delivery of 'signals' from
an object. Multiple other objects can listen in on an event without the
emitting object having to care.

Wallet:

class CWallet { ...
    boost::signal<void(int64)> balanceChanged;
}

void CWallet::newTx (...) {
    ...
    balanceChanged(new_balance);
    ...
}


UI:

GUI::GUI(CWallet *wallet) {
   ...
   wallet->balanceChanged.connect(boost::bind(&GUI::balanceChanged, this,
_1));
}
GUI::balanceChanged(int64 new_balance) {
   someWidget->setValue(new_balance);
}

Specific notifications that would be useful:

Wallet:

   - balanceChanged(int64): spendable balance changed
   - transactionAdded(int256): new transaction added to wallet
   - transactionUpdated(int256): transaction info changed
   - transactionRemoved(int256): transaction removed from wallet (can this
   happen? for completeness)
   - addressAdded(int160): address was added to address book
   - addressUpdated(int160): address label/other metadata was modified
   - addressRemoved(int160): address was removed from address book
   - notification(std::string message, int severity): warning/error occured
   in wallet processing, notify user
   - int askFee(std::string message, ...): ask user for fee

Network client:

   - numConnectionsChanged(int): new connections / connections broken
   - numBlocksChanged(int): new blocks came in or other changes to block
   chain
   - notification(std::string message, int severity): warning/error occured
   in network processing, notify user


JS

[-- Attachment #2: Type: text/html, Size: 2168 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-07-14 14:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-14  5:19 [Bitcoin-development] Notifications from client/wallet John Smith
2011-07-14  9:10 ` Pieter Wuille
2011-07-14 14:13 ` Matt Corallo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox