void OutboundMessageFragments::sendData(PeerState const &ps, uint32_t const msgId, ByteArray const &data) { auto timer = std::make_unique<boost::asio::deadline_timer>(m_context.ios, boost::posix_time::time_duration(0, 0, 2)); timer->async_wait(boost::bind(&OutboundMessageFragments::timerCallback, this, boost::asio::placeholders::error, ps, msgId)); OutboundMessageState oms(msgId, data); oms.setTimer(std::move(timer)); std::lock_guard<std::mutex> lock(m_mutex); uint32_t tmp = msgId; m_states.emplace(std::make_pair(std::move(tmp), std::move(oms))); m_context.ios.post(boost::bind(&OutboundMessageFragments::sendDataCallback, this, ps, msgId)); }
OopMap::OopMap(OopMap::DeepCopyToken, OopMap* source) { // This constructor does a deep copy // of the source OopMap. set_write_stream(new CompressedWriteStream(source->omv_count() * 2)); set_omv_count(0); set_offset(source->offset()); #ifdef ASSERT _locs_length = source->_locs_length; _locs_used = NEW_RESOURCE_ARRAY(OopMapValue::oop_types, _locs_length); for(int i = 0; i < _locs_length; i++) _locs_used[i] = OopMapValue::unused_value; #endif // We need to copy the entries too. for (OopMapStream oms(source); !oms.is_done(); oms.next()) { OopMapValue omv = oms.current(); omv.write_on(write_stream()); increment_count(); } }