pdu_to_blob: create blob directly from u8_vector
This commit is contained in:
+6
-11
@@ -42,26 +42,21 @@ pdu_to_blob_impl() :
|
||||
|
||||
void make_blob(pmt::pmt_t msg) {
|
||||
|
||||
assert(pmt::is_pair(msg));
|
||||
if(!pmt::is_pair(msg))
|
||||
throw std::invalid_argument("this block expects PDUs as input");
|
||||
|
||||
pmt::pmt_t vec = pmt::cdr(msg);
|
||||
assert(pmt::is_u8vector(vec));
|
||||
|
||||
if(!pmt::is_u8vector(vec))
|
||||
throw std::invalid_argument("this block expects PDUs as input");
|
||||
|
||||
size_t len;
|
||||
|
||||
const void *data = pmt::uniform_vector_elements(vec, len);
|
||||
assert(len < 4000);
|
||||
|
||||
std::memcpy(buf, data, len);
|
||||
|
||||
pmt::pmt_t blob = pmt::make_blob(buf, len);
|
||||
|
||||
pmt::pmt_t blob = pmt::make_blob(data, len);
|
||||
message_port_pub(pmt::mp("out"), blob);
|
||||
}
|
||||
|
||||
private:
|
||||
char buf[4000];
|
||||
|
||||
};
|
||||
|
||||
pdu_to_blob::sptr
|
||||
|
||||
Reference in New Issue
Block a user