}
}
- int count = 0;
- size_t first_newline;
-
for (size_t i = 0; i < context.Size; i++) {
if (context.Buffer[i] == '\n') {
- count++;
-
- if (count == 1)
- first_newline = i;
- else if (count > 1)
- break;
- }
- }
-
- switch (count) {
- case 0:
- context.MustRead = true;
- break;
- case 1:
- context.MustRead = first_newline == (context.Size - 1u);
- break;
- default:
- context.MustRead = false;
- }
-
- if (count > 0) {
- *line = String(context.Buffer, &(context.Buffer[first_newline]));
- boost::algorithm::trim_right(*line);
+ *line = String(context.Buffer, context.Buffer + i);
+ boost::algorithm::trim_right(*line);
- context.DropData(first_newline + 1);
+ context.DropData(i + 1u);
- return StatusNewItem;
+ context.MustRead = !context.Size;
+ return StatusNewItem;
+ }
}
+ context.MustRead = true;
return StatusNeedData;
}