本文整理汇总了C++中Wallet::currency方法的典型用法代码示例。如果您正苦于以下问题:C++ Wallet::currency方法的具体用法?C++ Wallet::currency怎么用?C++ Wallet::currency使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Wallet
的用法示例。
在下文中一共展示了Wallet::currency方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Status
static Status
bridgeTxCallback(Wallet &wallet,
const libbitcoin::transaction_type &tx,
tABC_BitCoin_Event_Callback fAsyncCallback, void *pData)
{
const auto addresses = wallet.addresses.list();
const auto info = wallet.txCache.txInfo(tx, addresses);
// Does this transaction concern us?
if (wallet.txCache.isRelevant(tx, addresses))
{
// Does the transaction already exist?
Tx meta;
if (!wallet.txs.get(meta, info.ntxid))
{
meta.ntxid = info.ntxid;
meta.txid = info.txid;
meta.timeCreation = time(nullptr);
meta.internal = false;
// Grab metadata from the address:
TxMetadata metadata;
for (const auto &io: info.ios)
{
Address address;
if (wallet.addresses.get(address, io.address))
meta.metadata = address.metadata;
}
meta.metadata.amountSatoshi = info.balance;
meta.metadata.amountFeesMinersSatoshi = info.fee;
ABC_CHECK(gContext->exchangeCache.satoshiToCurrency(
meta.metadata.amountCurrency, info.balance,
static_cast<Currency>(wallet.currency())));
// Save the metadata:
ABC_CHECK(wallet.txs.save(meta));
// Update the transaction cache:
watcherSave(wallet).log(); // Failure is not fatal
wallet.balanceDirty();
ABC_CHECK(wallet.addresses.markOutputs(info.ios));
// Update the GUI:
ABC_DebugLog("IncomingBitCoin callback: wallet %s, txid: %s",
wallet.id().c_str(), info.txid.c_str());
tABC_AsyncBitCoinInfo async;
async.pData = pData;
async.eventType = ABC_AsyncEventType_IncomingBitCoin;
Status().toError(async.status, ABC_HERE());
async.szWalletUUID = wallet.id().c_str();
async.szTxID = info.txid.c_str();
async.sweepSatoshi = 0;
fAsyncCallback(&async);
}
else
{
// Update the transaction cache:
watcherSave(wallet).log(); // Failure is not fatal
wallet.balanceDirty();
ABC_CHECK(wallet.addresses.markOutputs(info.ios));
// Update the GUI:
ABC_DebugLog("BalanceUpdate callback: wallet %s, txid: %s",
wallet.id().c_str(), info.txid.c_str());
tABC_AsyncBitCoinInfo async;
async.pData = pData;
async.eventType = ABC_AsyncEventType_BalanceUpdate;
Status().toError(async.status, ABC_HERE());
async.szWalletUUID = wallet.id().c_str();
async.szTxID = info.txid.c_str();
async.sweepSatoshi = 0;
fAsyncCallback(&async);
}
}
else
{
ABC_DebugLog("New (irrelevant) transaction: wallet %s, txid: %s",
wallet.id().c_str(), info.txid.c_str());
}
return Status();
}
示例2: Status
Status
onReceive(Wallet &wallet, const TxInfo &info,
tABC_BitCoin_Event_Callback fCallback, void *pData)
{
wallet.balanceDirty();
ABC_CHECK(wallet.addresses.markOutputs(info));
// Does the transaction already exist?
TxMeta meta;
if (!wallet.txs.get(meta, info.ntxid))
{
const auto balance = wallet.addresses.balance(info);
meta.ntxid = info.ntxid;
meta.txid = info.txid;
meta.timeCreation = time(nullptr);
meta.internal = false;
meta.airbitzFeeWanted = 0;
meta.airbitzFeeSent = 0;
// Receives can accumulate Airbitz fees:
const auto airbitzFeeInfo = generalAirbitzFeeInfo();
meta.airbitzFeeWanted = airbitzFeeIncoming(airbitzFeeInfo, balance);
logInfo("Airbitz fee: " +
std::to_string(meta.airbitzFeeWanted) + " wanted, " +
std::to_string(wallet.txs.airbitzFeePending()) + " pending");
// Grab metadata from the address:
for (const auto &io: info.ios)
{
AddressMeta address;
if (wallet.addresses.get(address, io.address))
meta.metadata = address.metadata;
}
ABC_CHECK(gContext->exchangeCache.satoshiToCurrency(
meta.metadata.amountCurrency, balance,
static_cast<Currency>(wallet.currency())));
// Save the metadata:
ABC_CHECK(wallet.txs.save(meta, balance, info.fee));
// Update the GUI:
ABC_DebugLog("IncomingBitCoin callback: wallet %s, txid: %s",
wallet.id().c_str(), info.txid.c_str());
tABC_AsyncBitCoinInfo async;
async.pData = pData;
async.eventType = ABC_AsyncEventType_IncomingBitCoin;
Status().toError(async.status, ABC_HERE());
async.szWalletUUID = wallet.id().c_str();
async.szTxID = info.txid.c_str();
async.sweepSatoshi = 0;
fCallback(&async);
}
else
{
// Update the GUI:
ABC_DebugLog("BalanceUpdate callback: wallet %s, txid: %s",
wallet.id().c_str(), info.txid.c_str());
tABC_AsyncBitCoinInfo async;
async.pData = pData;
async.eventType = ABC_AsyncEventType_BalanceUpdate;
Status().toError(async.status, ABC_HERE());
async.szWalletUUID = wallet.id().c_str();
async.szTxID = info.txid.c_str();
async.sweepSatoshi = 0;
fCallback(&async);
}
return Status();
}