#include #include #include #include #include "message_bus/ingress/EdgeUplinkWire.h" using softbus::message_bus::ingress::edge_uplink::FrameKind; using softbus::message_bus::ingress::edge_uplink::encodeOuterFrame; using softbus::message_bus::ingress::edge_uplink::tryPopOneOuterFrame; int main() { const QByteArray inner = QByteArray("hello"); const QByteArray frame = encodeOuterFrame(FrameKind::Hello, inner); assert(frame.size() == 16 + inner.size()); assert(frame.at(0) == 'S' && frame.at(1) == 'B' && frame.at(2) == 'U' && frame.at(3) == 'P'); QByteArray buf = frame; const auto popped = tryPopOneOuterFrame(buf, 1024 * 1024); assert(popped.has_value()); assert(popped->kind == FrameKind::Hello); assert(popped->payload == inner); assert(buf.isEmpty()); // DATA_RAWBUS round-trip meta QByteArray raw; raw.resize(48 + 5 + 3); unsigned char* w = reinterpret_cast(raw.data()); qToBigEndian(static_cast(5), w + 0); // trace len qToBigEndian(static_cast(7), reinterpret_cast(w + 2)); qToBigEndian(static_cast(0xAABBCCDD), w + 6); qToBigEndian(static_cast(0), w + 10); qToBigEndian(static_cast(0), w + 12); qToBigEndian(static_cast(1), w + 14); qToBigEndian(static_cast(2), w + 18); qToBigEndian(static_cast(0), w + 26); qToBigEndian(static_cast(123456789LL), reinterpret_cast(w + 34)); w[42] = static_cast(1); // direction std::memset(w + 43, 0, 5); std::memcpy(w + 48, "trace", 5); std::memcpy(w + 53, "AB\x00", 3); softbus::core::models::RawBusMessage msg; QByteArray busOut; QString err; const bool ok = softbus::message_bus::ingress::edge_uplink::decodeDataRawBusPayload(raw, msg, busOut, &err); assert(ok); assert(msg.deviceId == 7); assert(msg.endpointHash == 0xAABBCCDDu); assert(msg.traceId == QStringLiteral("trace")); assert(busOut.size() == 3); assert(busOut.at(0) == 'A'); return 0; }