1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
#pragma once
#include <torch/csrc/distributed/rpc/message.h>
#include <torch/csrc/distributed/rpc/types.h>
namespace torch {
namespace distributed {
namespace rpc {
// Base class for all RPC request and responses.
class RpcCommandBase {
public:
// Need to override this to serialize the RPC. This should destructively
// create a message for the RPC (Hence the &&).
c10::intrusive_ptr<Message> toMessage() && {
JitRRefPickleGuard jitPickleGuard;
return std::move(*this).toMessageImpl();
}
virtual c10::intrusive_ptr<Message> toMessageImpl() && = 0;
virtual ~RpcCommandBase() = 0;
};
inline RpcCommandBase::~RpcCommandBase() = default;
} // namespace rpc
} // namespace distributed
} // namespace torch
|