private void FetchBlockHeaderByHashTxSizes(byte[] blockHash, FetchBlockHeaderByHashTxsSizeHandler handler) { var managedHash = new hash_t { hash = blockHash }; IntPtr contextPtr = CreateContext(handler, managedHash); ChainNative.chain_fetch_block_header_by_hash_txs_size(nativeInstance_, contextPtr, managedHash, internalFetchBlockHeaderByHashTxsSizeHandler_); }
private static void FetchBlockHeaderByHashTxsSizeInternalHandler(IntPtr chain, IntPtr contextPtr, ErrorCode error, IntPtr blockHeader, UInt64 blockHeight, IntPtr txHashes, UInt64 blockSerializedSize) { var contextHandle = (GCHandle)contextPtr; try { var context = contextHandle.Target as Tuple <FetchBlockHeaderByHashTxsSizeHandler, hash_t>; FetchBlockHeaderByHashTxsSizeHandler handler = context.Item1; handler(error, new Header(blockHeader), blockHeight, new HashList(txHashes), blockSerializedSize); } finally { contextHandle.Free(); } }
public static extern void chain_fetch_block_header_by_hash_txs_size(IntPtr chain, IntPtr ctx, hash_t hash, FetchBlockHeaderByHashTxsSizeHandler handler);