#pragma once #include #include namespace torch::distributed::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 toMessage() && { JitRRefPickleGuard jitPickleGuard; return std::move(*this).toMessageImpl(); } virtual c10::intrusive_ptr toMessageImpl() && = 0; virtual ~RpcCommandBase() = 0; }; inline RpcCommandBase::~RpcCommandBase() = default; } // namespace torch::distributed::rpc