55 lines
1.0 KiB
C++
55 lines
1.0 KiB
C++
|
#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__
|