@@ -108,8 +108,6 @@ class Writer {
108
108
*/
109
109
void EncodeVarint (uint64_t value);
110
110
111
- public:
112
- // TODO(rsgowman): make this private again.
113
111
pb_ostream_t * stream_;
114
112
};
115
113
@@ -240,40 +238,38 @@ std::string DecodeString(pb_istream_t* stream) {
240
238
// TODO(rsgowman): Refactor to use a helper class that wraps the stream struct.
241
239
// This will help with error handling, and should eliminate the issue of two
242
240
// 'EncodeFieldValue' methods.
243
- void EncodeFieldValueImpl (pb_ostream_t * raw_stream,
244
- const FieldValue& field_value) {
241
+ void EncodeFieldValueImpl (Writer* stream, const FieldValue& field_value) {
245
242
// TODO(rsgowman): some refactoring is in order... but will wait until after a
246
243
// non-varint, non-fixed-size (i.e. string) type is present before doing so.
247
- Writer stream (raw_stream);
248
244
switch (field_value.type ()) {
249
245
case FieldValue::Type::Null:
250
- stream. EncodeTag (PB_WT_VARINT,
251
- google_firestore_v1beta1_Value_null_value_tag);
252
- stream. EncodeNull ();
246
+ stream-> EncodeTag (PB_WT_VARINT,
247
+ google_firestore_v1beta1_Value_null_value_tag);
248
+ stream-> EncodeNull ();
253
249
break ;
254
250
255
251
case FieldValue::Type::Boolean:
256
- stream. EncodeTag (PB_WT_VARINT,
257
- google_firestore_v1beta1_Value_boolean_value_tag);
258
- stream. EncodeBool (field_value.boolean_value ());
252
+ stream-> EncodeTag (PB_WT_VARINT,
253
+ google_firestore_v1beta1_Value_boolean_value_tag);
254
+ stream-> EncodeBool (field_value.boolean_value ());
259
255
break ;
260
256
261
257
case FieldValue::Type::Integer:
262
- stream. EncodeTag (PB_WT_VARINT,
263
- google_firestore_v1beta1_Value_integer_value_tag);
264
- stream. EncodeInteger (field_value.integer_value ());
258
+ stream-> EncodeTag (PB_WT_VARINT,
259
+ google_firestore_v1beta1_Value_integer_value_tag);
260
+ stream-> EncodeInteger (field_value.integer_value ());
265
261
break ;
266
262
267
263
case FieldValue::Type::String:
268
- stream. EncodeTag (PB_WT_STRING,
269
- google_firestore_v1beta1_Value_string_value_tag);
270
- stream. EncodeString (field_value.string_value ());
264
+ stream-> EncodeTag (PB_WT_STRING,
265
+ google_firestore_v1beta1_Value_string_value_tag);
266
+ stream-> EncodeString (field_value.string_value ());
271
267
break ;
272
268
273
269
case FieldValue::Type::Object:
274
- stream. EncodeTag (PB_WT_STRING,
275
- google_firestore_v1beta1_Value_map_value_tag);
276
- EncodeObject (& stream, field_value.object_value ());
270
+ stream-> EncodeTag (PB_WT_STRING,
271
+ google_firestore_v1beta1_Value_map_value_tag);
272
+ EncodeObject (stream, field_value.object_value ());
277
273
break ;
278
274
279
275
default :
@@ -441,9 +437,8 @@ void EncodeFieldsEntry(Writer* stream,
441
437
// Encode the value (FieldValue)
442
438
stream->EncodeTag (PB_WT_STRING,
443
439
google_firestore_v1beta1_MapValue_FieldsEntry_value_tag);
444
- stream->EncodeNestedMessage ([&kv](Writer* stream) {
445
- EncodeFieldValueImpl (stream->stream_ , kv.second );
446
- });
440
+ stream->EncodeNestedMessage (
441
+ [&kv](Writer* stream) { EncodeFieldValueImpl (stream, kv.second ); });
447
442
}
448
443
449
444
std::pair<std::string, FieldValue> DecodeFieldsEntry (pb_istream_t * stream) {
@@ -537,7 +532,7 @@ void Serializer::EncodeFieldValue(const FieldValue& field_value,
537
532
// bytes_written is (always) initialized to 0. (NB: nanopb does not know or
538
533
// care about the underlying output vector, so where we are in the vector
539
534
// itself is irrelevant. i.e. don't use out_bytes->size())
540
- pb_ostream_t stream = {
535
+ pb_ostream_t raw_stream = {
541
536
/* callback=*/ [](pb_ostream_t * stream, const pb_byte_t * buf,
542
537
size_t count) -> bool {
543
538
auto * out_bytes = static_cast <std::vector<uint8_t >*>(stream->state );
@@ -548,6 +543,7 @@ void Serializer::EncodeFieldValue(const FieldValue& field_value,
548
543
/* max_size=*/ kMaxDocumentSize ,
549
544
/* bytes_written=*/ 0 ,
550
545
/* errmsg=*/ NULL };
546
+ Writer stream (&raw_stream);
551
547
EncodeFieldValueImpl (&stream, field_value);
552
548
}
553
549
0 commit comments