File: messagewrapper.cpp

package info (click to toggle)
qflipper 1.3.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 12,320 kB
  • sloc: cpp: 18,500; sh: 247; ansic: 191; xml: 38; python: 14; makefile: 5
file content (44 lines) | stat: -rw-r--r-- 973 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "messagewrapper.h"

#include "pb_decode.h"

#include "mainresponse.h"

MessageWrapper::MessageWrapper(const QByteArray &buffer):
    m_message(PB_Main_init_zero)
{
    pb_istream_t s = pb_istream_from_buffer((const pb_byte_t*)buffer.data(), buffer.size());
    m_isComplete = pb_decode_ex(&s, &PB_Main_msg, &m_message, PB_DECODE_DELIMITED);
    m_encodedSize = buffer.size() - s.bytes_left;
}

MessageWrapper::MessageWrapper(MessageWrapper &&other):
    m_message(other.m_message),
    m_encodedSize(other.m_encodedSize),
    m_isComplete(other.m_isComplete)
{
    // Prevent potential double-free
    other.m_isComplete = false;
}

MessageWrapper::~MessageWrapper()
{
    if(m_isComplete) {
        pb_release(&PB_Main_msg, &m_message);
    }
}

const PB_Main &MessageWrapper::message() const
{
    return m_message;
}

size_t MessageWrapper::encodedSize() const
{
    return m_encodedSize;
}

bool MessageWrapper::isComplete() const
{
    return m_isComplete;
}