aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core/src/firebase/firestore/remote/serializer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Firestore/core/src/firebase/firestore/remote/serializer.cc')
-rw-r--r--Firestore/core/src/firebase/firestore/remote/serializer.cc55
1 files changed, 37 insertions, 18 deletions
diff --git a/Firestore/core/src/firebase/firestore/remote/serializer.cc b/Firestore/core/src/firebase/firestore/remote/serializer.cc
index 19a068b..fc8b312 100644
--- a/Firestore/core/src/firebase/firestore/remote/serializer.cc
+++ b/Firestore/core/src/firebase/firestore/remote/serializer.cc
@@ -63,11 +63,11 @@ using firebase::firestore::util::StatusOr;
namespace {
void EncodeMapValue(Writer* writer, const ObjectValue& object_value);
-void EncodeObjectMap(Writer* writer,
- const ObjectValue::Map& object_value_map,
- uint32_t map_tag,
- uint32_t key_tag,
- uint32_t value_tag);
+void EncodeObjectMapImpl(Writer* writer,
+ const ObjectValue::Map& object_value_map,
+ uint32_t map_tag,
+ uint32_t key_tag,
+ uint32_t value_tag);
ObjectValue::Map DecodeMapValue(Reader* reader);
@@ -336,11 +336,11 @@ ObjectValue::Map::value_type DecodeDocumentFieldsEntry(Reader* reader) {
google_firestore_v1beta1_Document_FieldsEntry_value_tag);
}
-void EncodeObjectMap(Writer* writer,
- const ObjectValue::Map& object_value_map,
- uint32_t map_tag,
- uint32_t key_tag,
- uint32_t value_tag) {
+void EncodeObjectMapImpl(Writer* writer,
+ const ObjectValue::Map& object_value_map,
+ uint32_t map_tag,
+ uint32_t key_tag,
+ uint32_t value_tag) {
// Write each FieldsEntry (i.e. key-value pair.)
for (const auto& kv : object_value_map) {
writer->WriteTag({PB_WT_STRING, map_tag});
@@ -351,10 +351,10 @@ void EncodeObjectMap(Writer* writer,
}
void EncodeMapValue(Writer* writer, const ObjectValue& object_value) {
- EncodeObjectMap(writer, object_value.internal_value,
- google_firestore_v1beta1_MapValue_fields_tag,
- google_firestore_v1beta1_MapValue_FieldsEntry_key_tag,
- google_firestore_v1beta1_MapValue_FieldsEntry_value_tag);
+ EncodeObjectMapImpl(writer, object_value.internal_value,
+ google_firestore_v1beta1_MapValue_fields_tag,
+ google_firestore_v1beta1_MapValue_FieldsEntry_key_tag,
+ google_firestore_v1beta1_MapValue_FieldsEntry_value_tag);
}
ObjectValue::Map DecodeMapValue(Reader* reader) {
@@ -499,10 +499,11 @@ void Serializer::EncodeDocument(Writer* writer,
// Encode Document.fields (unless it's empty)
if (!object_value.internal_value.empty()) {
- EncodeObjectMap(writer, object_value.internal_value,
- google_firestore_v1beta1_Document_fields_tag,
- google_firestore_v1beta1_Document_FieldsEntry_key_tag,
- google_firestore_v1beta1_Document_FieldsEntry_value_tag);
+ EncodeObjectMapImpl(
+ writer, object_value.internal_value,
+ google_firestore_v1beta1_Document_fields_tag,
+ google_firestore_v1beta1_Document_FieldsEntry_key_tag,
+ google_firestore_v1beta1_Document_FieldsEntry_value_tag);
}
// Skip Document.create_time and Document.update_time, since they're
@@ -667,6 +668,24 @@ std::unique_ptr<Document> Serializer::DecodeDocument(Reader* reader) const {
/*has_local_modifications=*/false);
}
+void Serializer::EncodeObjectMap(
+ nanopb::Writer* writer,
+ const model::ObjectValue::Map& object_value_map,
+ uint32_t map_tag,
+ uint32_t key_tag,
+ uint32_t value_tag) {
+ // TODO(rsgowman): Move the implementation of EncodeObjectMapImpl here and
+ // eliminate that function. The only reason I'm (temporarily) keeping it, is
+ // that performing that refactoring now will cause a cascade of things that
+ // need to move into the local serializer class (as private functions).
+ EncodeObjectMapImpl(writer, object_value_map, map_tag, key_tag, value_tag);
+}
+
+void Serializer::EncodeVersion(nanopb::Writer* writer,
+ const model::SnapshotVersion& version) {
+ EncodeTimestamp(writer, version.timestamp());
+}
+
} // namespace remote
} // namespace firestore
} // namespace firebase