@@ -51,9 +51,10 @@ absl::Status NotFoundError(const Handle h) {
5151}
5252} // namespace
5353
54- std::unique_ptr<Engine> Engine::Create (const Config& config, HostInfo& self,
55- Control& control,
56- RecvPostCallback recv_post_callback) {
54+ std::unique_ptr<Engine> Engine::Create (
55+ const Config& config, HostInfo& self, Control& control,
56+ RecvPostCallback recv_post_callback,
57+ ResolveAddrCallback resolve_addr_callback) {
5758 static_assert (assumptions::kHostInfoDependsOnControlAndDataPlanes );
5859
5960 if ABSL_PREDICT_FALSE (!config.IsValid ()) {
@@ -67,20 +68,23 @@ std::unique_ptr<Engine> Engine::Create(const Config& config, HostInfo& self,
6768 }
6869 DCHECK (self.IsDataPlaneValid ());
6970 return absl::WrapUnique (new Engine (config, self, std::move (helper),
70- std::move (recv_post_callback)));
71+ std::move (recv_post_callback),
72+ std::move (resolve_addr_callback)));
7173}
7274
7375Engine::Engine (const Config& config, const HostInfo& self,
7476 std::unique_ptr<EngineHelper> helper,
75- RecvPostCallback recv_post_callback)
77+ RecvPostCallback recv_post_callback,
78+ ResolveAddrCallback resolve_addr_callback)
7679 : config_(config),
7780 self_ (self),
7881 stop_(false ),
7982 next_handle_(util::Random<Handle::ValueType>(bitgen_)),
8083 next_reqid_(util::Random<ReqId::ValueType>(bitgen_)),
8184 outgoing_(helper->Metrics (), helper->Tracer()),
8285 incoming_(helper->Metrics (), helper->Tracer(),
83- std::move(recv_post_callback)),
86+ std::move(recv_post_callback),
87+ std::move(resolve_addr_callback)),
8488 metrics_(helper->Metrics ()),
8589 tracer_(helper->Tracer ()),
8690 helper_(std::move(helper)) {
@@ -291,7 +295,9 @@ void Engine::processWrite(Workers& workers, const Handle handle,
291295 chunk.reqid = req_info.reqid ;
292296 chunk.index = chunk_t (i);
293297 chunk.byte_offset = offset;
294- chunk.raddr = addr_t (req_info.raddr .value () + offset);
298+ chunk.raddr = req_info.raddr .value () == 0
299+ ? addr_t (0 )
300+ : addr_t (req_info.raddr .value () + offset);
295301 if ABSL_PREDICT_FALSE (trace_ctx.is_traced ) {
296302 chunk.trace .SetTraced ();
297303 }
0 commit comments