Files
pytorch/torch/csrc/distributed/rpc/script_resp.cpp
Michael Suo dbe850af5b [jit] do the code reorg (#33851)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/33851

Rationale and context described in #33828.

Script to reproduce the move:
https://gist.github.com/suo/16cbefaaeb67ca5a7c6caffd49b7f6e9
ghstack-source-id: 99079645

Test Plan: Make sure CI passes

Reviewed By: jamesr66a

Differential Revision: D20133869

fbshipit-source-id: 390e9241a9c85366d9005c492ac31f10aa96488e
2020-02-27 13:02:51 -08:00

47 lines
1.2 KiB
C++

#include <torch/csrc/distributed/rpc/script_resp.h>
#include <c10/util/C++17.h>
#include <torch/csrc/distributed/rpc/rpc_agent.h>
#include <torch/csrc/jit/serialization/pickle.h>
#include <torch/csrc/jit/serialization/unpickler.h>
namespace torch {
namespace distributed {
namespace rpc {
namespace {
using torch::jit::Pickler;
using torch::jit::Unpickler;
} // namespace
ScriptResp::ScriptResp(at::IValue&& value) : value_(value) {}
const at::IValue& ScriptResp::value() {
return value_;
}
Message ScriptResp::toMessage() && {
std::vector<torch::Tensor> tensor_table;
auto payload = jit::pickle(value_, &tensor_table);
;
return Message(
std::move(payload), std::move(tensor_table), MessageType::SCRIPT_RET);
}
std::unique_ptr<ScriptResp> ScriptResp::fromMessage(const Message& message) {
auto payload = static_cast<const char*>(message.payload().data());
auto payload_size = message.payload().size();
auto value = jit::unpickle(
payload,
payload_size,
*RpcAgent::getCurrentRpcAgent()->getTypeResolver(),
&message.tensors());
return std::make_unique<ScriptResp>(std::move(value));
}
} // namespace rpc
} // namespace distributed
} // namespace torch