76void rpb::CombinerV1::setup_python() {
78 bp::class_<rpb::CombinerV1, rpb::CombinerV1Ptr, bp::bases<ris::Master, ris::Slave>, boost::noncopyable>(
81 .def(
"sendBatch", &rpb::CombinerV1::sendBatch)
82 .def(
"getCount", &rpb::CombinerV1::getCount);
122void rpb::CombinerV1::sendBatch() {
123 std::vector<ris::FramePtr> frames;
126 std::lock_guard<std::mutex> guard(mtx_);
127 if (queue_.empty())
return;
132 uint32_t totalSize = headerSize_;
133 for (
auto& f : frames) {
134 uint32_t payloadSize = f->getPayload();
137 uint32_t padded = payloadSize;
138 if ((payloadSize % headerSize_) != 0) padded = ((payloadSize / headerSize_) + 1) * headerSize_;
140 totalSize += padded + tailSize_;
147 sFrame->setPayload(totalSize);
152 uint8_t byte0 = (width_ << 4) | 0x1;
157 if (headerSize_ > 2) {
158 uint32_t padLen = headerSize_ - 2;
160 for (uint32_t i = 0; i < padLen; i++)
ris::toFrame(it, 1, &zero);
164 for (
auto& f : frames) {
166 uint32_t payloadSize = f->getPayload();
173 uint32_t padded = payloadSize;
174 if ((payloadSize % headerSize_) != 0) padded = ((payloadSize / headerSize_) + 1) * headerSize_;
175 uint32_t padLen = padded - payloadSize;
177 for (uint32_t i = 0; i < padLen; i++)
ris::toFrame(it, 1, &zero);
184 uint8_t dest = f->getChannel();
185 uint8_t fUser = f->getFirstUser();
186 uint8_t lUser = f->getLastUser();
187 uint8_t widthByte = width_;
195 uint32_t tailPad = tailSize_ - 8;
196 for (uint32_t i = 0; i < tailPad; i++)
ris::toFrame(it, 1, &zero);