void block_database::store(const block_type& block) { const uint32_t height = index_.count(); const auto number_txs = block.transactions.size(); const uint32_t number_txs32 = static_cast<uint32_t>(number_txs); // Write block data. const auto write = [&](uint8_t* data) { satoshi_save(block.header, data); auto serial = make_serializer(data + 80); serial.write_4_bytes(height); serial.write_4_bytes(number_txs32); for (const auto& tx: block.transactions) { const auto tx_hash = hash_transaction(tx); serial.write_hash(tx_hash); } }; const auto key = hash_block_header(block.header); const auto value_size = 80 + 4 + 4 + number_txs * hash_size; const auto position = map_.store(key, write, value_size); // Write height -> position mapping. write_position(position); }
inline void TrivialReplication::internal_transact_log_reserve(size_t n, char** new_begin, char** new_end) { char* data = m_transact_log_buffer.data(); size_t size = write_position() - data; m_transact_log_buffer.reserve_extra(size, n); data = m_transact_log_buffer.data(); // May have changed *new_begin = data + size; *new_end = data + m_transact_log_buffer.size(); }
//Fonction qui effectue un "Clear" sur le LCD et qui met les nom des équipiers sur la ligne du haut. void clear(void) { // Clear LCD wait(); ROM_GPIOPinWrite(GPIO_PORTJ_BASE, LCD_RS | LCD_RW, LCD_RS_Instruction | LCD_RW_Write); ROM_GPIOPinWrite(GPIO_PORTJ_BASE, LCD_E, LCD_E); ROM_GPIOPinWrite(GPIO_PORTE_BASE, 0xFF, 0x01); ROM_GPIOPinWrite(GPIO_PORTJ_BASE, LCD_E, 0); // Write names write_position(); // Reset counter nbrchar = 0; }
void block_database::store(const block_type& block) { const size_t height = index_.size(); // Write block data. const hash_digest key = hash_block_header(block.header); const size_t number_txs = block.transactions.size(); const size_t value_size = 80 + 4 + 4 + number_txs * hash_size; auto write = [&](uint8_t* data) { satoshi_save(block.header, data); auto serial = make_serializer(data + 80); serial.write_4_bytes(height); serial.write_4_bytes(number_txs); for (const transaction_type& tx: block.transactions) { const hash_digest tx_hash = hash_transaction(tx); serial.write_hash(tx_hash); } }; const position_type position = map_.store(key, value_size, write); // Write height -> position mapping. write_position(position); }
inline size_t TrivialReplication::transact_log_size() { return write_position() - m_transact_log_buffer.data(); }
inline BinaryData TrivialReplication::get_uncommitted_changes() const noexcept { const char* data = m_transact_log_buffer.data(); size_t size = write_position() - data; return BinaryData(data, size); }
IOResult FileHandle::write(uint32_t count, const uint8_t *data) { auto result = _fs->write(_entry_id, write_position(), count, data); change_write_position(result.bytes()); return result; }