93 {
94 if (
data_ ==
nullptr) {
95 return;
96 }
98 if (buffer_.empty()) {
100 buffer_.push_back(*
data_);
101 }
103 } else if (buffer_.size() == 1) {
105 buffer_.push_back(*
data_++);
106 } else {
107 buffer_.clear();
108 }
109 } else if (buffer_.size() == 2) {
111 buffer_.push_back(*
data_++);
112 header_length_ = sizeof(enbroad::FrameHeader);
113 } else {
114 buffer_.clear();
115 }
116 } else if (header_length_ > 0) {
117 if (buffer_.size() < header_length_) {
118 buffer_.push_back(*
data_++);
119 } else {
120 total_length_ = header_length_ +
121 reinterpret_cast<enbroad::FrameHeader*>(buffer_.data())
122 ->message_length +
123 1 + 2;
124 header_length_ = 0;
125 }
126 } else if (total_length_ > 0) {
127 if (buffer_.size() < total_length_) {
128 buffer_.push_back(*
data_++);
129 continue;
130 }
131 if (!PrepareMessage()) {
132 buffer_.clear();
133 total_length_ = 0;
134 } else {
135 buffer_.clear();
136 total_length_ = 0;
137 messages->push_back(
140 messages->push_back(
142 messages->push_back(MessageInfo{
144 messages->push_back(
146 messages->push_back(MessageInfo{
148 }
149 }
150 }
151}
const uint8_t * data_end_
::google::protobuf::Message * MessagePtr