public override async Task <Money> GetAddressBalanceAsync(Address address, ulong startHeight = 0) { PathInfo balanceCache = DefaultCachePath.SubPath("balances"); FileInfo cache = FileInfo.Create(balanceCache, String.Format("{0}.{1}", GetHashedAddress(address), "bal")); Money balance = await base.GetAddressBalanceAsync(address, startHeight); using (var writer = new StreamWriter(FileStream.Create(cache, FileMode.Create))) { await writer.WriteLineAsync(balance.Cents.ToString()); } return(balance); }
public override async Task <Money> GetCachedBalanceAsync(Address address, ulong startHeight = 0) { PathInfo balanceCache = DefaultCachePath.SubPath("balances"); FileInfo cache = FileInfo.Create(balanceCache, String.Format("{0}.{1}", GetHashedAddress(address), "bal")); if (cache.Exists) { using (var stream = FileStream.Create(cache, FileMode.Open)) { using (var reader = new StreamReader(stream)) { return(new Money(Int64.Parse(await reader.ReadLineAsync()), "BTC")); } } } return(await base.GetCachedBalanceAsync(address, startHeight)); }
public override async Task <Transaction> GetTransactionAsync(Transaction.Info info) { PathInfo txCache = DefaultCachePath.SubPath("transactions"); FileInfo cache = FileInfo.Create(txCache, String.Format("{0}.{1}", info.Hash, "tx")); Transaction tx; if (cache.Exists) { tx = new Transaction(); tx.ReadPayload(new BinaryReader(FileStream.Create(cache, FileMode.Open))); tx.Height = info.Height; } else { tx = await base.GetTransactionAsync(info); tx.WritePayload(new BinaryWriter(FileStream.Create(cache, FileMode.Create))); } return(tx); }