#ifndef __UT_ROBOT_SDK_CHANNEL_PUBLISHER_HPP__ #define __UT_ROBOT_SDK_CHANNEL_PUBLISHER_HPP__ #include <unitree/robot/channel/channel_factory.hpp> namespace unitree { namespace robot { template<typename MSG> class ChannelPublisher { public: explicit ChannelPublisher(const std::string& channelName) : mChannelName(channelName) {} void InitChannel() { mChannelPtr = ChannelFactory::Instance()->CreateSendChannel<MSG>(mChannelName); } bool Write(const MSG& msg, int64_t waitMicrosec = 0) { if (mChannelPtr) { return mChannelPtr->Write(msg, waitMicrosec); } return false; } void CloseChannel() { mChannelPtr.reset(); } const std::string& GetChannelName() const { return mChannelName; } private: std::string mChannelName; ChannelPtr<MSG> mChannelPtr; }; template<typename MSG> using ChannelPublisherPtr = std::shared_ptr<ChannelPublisher<MSG>>; } } #endif//__UT_ROBOT_SDK_CHANNEL_PUBLISHER_HPP__