aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core/src
Commit message (Collapse)AuthorAge
* Convert googletest and nanopb CMake builds to add_subdirectory (#1522)Gravatar Gil2018-07-13
| | | | | | | | | | | | | | | | | | | | | | | | | | * Add a download-only boringssl ExternalProject Match boringssl version to grpc submodule version Note: not yet in use * Split grpc into separate download and build tasks This allows other external targets to download into the gRPC source tree before grpc is actually built. * Convert grpc to an http download * Build googletest with add_subdirectory Also: * Revert library-name modifications in the abseil-cpp build * Move abseil-cpp add_subdirectory build into place * Build nanopb with add_subdirectory * Force nanopb first to work around ODR violations This is a temporary work-around for b/111328563.
* Fix Firestore when compiled with Xcode 8.3 (#1519)Gravatar Gil2018-07-11
| | | | | | | | | | | | | * Add a travis stage that tests building Firestore with Xcode 8.3. * Simulate on a device available in Xcode 8 * Fix compile errors under Xcode 8.3.3 * Remove Firestore_SwiftTests_iOS from the Firestore_Tests_iOS Scheme I'll create a new target for this but in another PR. * Add an entry to CHANGELOG.md
* Firestore CMake cleanup (#1510)Gravatar Gil2018-07-11
| | | | | | | | | | | | | | | * Pull out sanitizer options into a separate file * Reorder packages * Remove the extra "external/$target" directory from PREFIX Instead of BINARY_DIR/external/foo/src/foo the contents will be in BINARY_DIR/src/foo. * Make libprotobuf-nanopb targets line up with nanopb's CMakeLists.txt * Fix CMake style
* Fix Firestore source errors under VS2017 (#1515)Gravatar Gil2018-07-11
| | | | | | | | | | | | | | | | * Project file updates from sync_project.rb * Fix misc compile errors under VS2017 * Fix util/hashing under VS2017 std::hash<int> is not just a pass through in Microsoft's STL. * Disable unsafe code warnings in VS2017 ... where comparing against a reference implementation that has no easy safe equivalent. * Handle drive letters in paths on Windows
* C++ migration: add a C++ implementation of `FSTExponentialBackoff` (#1465)Gravatar Konstantin Varlamov2018-07-10
| | | | | | | | | | | This is a pretty close port of `FSTExponentialBackoff`. The changes are pretty minor: * delay is calculated using <chrono> duration types, not plain numbers, which should be a little more type-safe; * split a piece of code into a ClampDelay function, because it's reasonably close to std::clamp; * rephrased the class-level comment to make it clearer that the first attempt always has delay = 0; * added simple tests (other platforms don't have tests for this). Also make sure that canceling a DelayedOperation is always valid.
* Eliminate unnecessary DocumentKey->FSTDocumentKey conversions (#1507)Gravatar Konstantin Varlamov2018-07-10
|
* C++: for immutable data structures, forbid ignoring result of insert/eraseGravatar Konstantin Varlamov2018-07-09
|
* Split GoogleUtilities from FirebaseCore (#1370)Gravatar Paul Beusterien2018-07-06
|
* Add support for NoDocument in the local serializer (#1484)Gravatar rsgowman2018-07-03
|
* Initial (incomplete) implementation of f:f::core::Query (#1471)Gravatar rsgowman2018-06-29
|
* Refactor nanopb decoding methods (#1438)Gravatar rsgowman2018-06-25
| | | Rather than decoding the type, and then the contents, decode them both at once.
* Fix a few implicit converstion warnings (#1439)Gravatar rsgowman2018-06-22
| | | Were showing up in xcode build (but not cmake build)
* Refactored a few methods from anon namespace to remote serializer (#1435)Gravatar rsgowman2018-06-22
|
* Initial creation of the local serializer. (#1415)Gravatar rsgowman2018-06-21
| | | Added a single, basic test as a motivator.
* Avoid closing unintialized substreams (#1411)Gravatar Mina Farid2018-06-18
| | | | | * A substream should not be closed if pb_make_string_substream() failed to create it and returned false. * Fixed a potential wrong error message.
* Minor LevelDB cleanups (#1401)Gravatar Gil2018-06-13
| | | | | | * Add leveldb_transaction* to the CMake build * Use std::unique_ptr for leveldb::DB pointers
* Create Status objects from errno (#1374)Gravatar Gil2018-06-12
| | | | | | | | | | | * Add a portable interface to strerror * Add Status::FromErrno * Add strerror_test.cc to the Xcode project * Use glibc feature selection macros instead of return-type overloads * Fix tensorflow references
* Force refresh token if RPC fails with "Unauthenticated" error (#1373)Gravatar Konstantin Varlamov2018-06-07
| | | "Unauthenticated" is presumed to mean that token is expired (which might happen if local clock is wrong) and retried, subject to the usual backoff logic.
* Add pathname manipulation utilities (#1376)Gravatar Gil2018-06-05
|
* Skip unknown fields while decoding BatchGetDocumentsResponse proto objects ↵Gravatar rsgowman2018-06-05
| | | | (#1377)
* Build cleanup (#1375)Gravatar Gil2018-06-04
| | | | | | * Remove extraneous firebase_firestore_util_async_queue target * Remove unimplemented declaration in string_util.h
* Skip unknown fields while decoding FieldValue proto objects. (#1354)Gravatar rsgowman2018-06-04
|
* Rename nanopb generated headers from foo.pb.h to foo.nanopb.h (#1371)Gravatar rsgowman2018-06-04
| | | | | This avoids a collision with the libprotobuf generated files. Also removes the "well-known" cpp protos, relying on libprotobuf to supply these instead.
* Fix Firestore compilation under Xcode < 9.2 (#1367)Gravatar Gil2018-06-01
| | | | | | | | | | | | | | | | * Don't rely on specialization failure to determine when std::hash is unavailable. Instead manually declare the conditions under which std::hash should be defined. * Fix detection of Objective-C classes in Xcode < 9.2 std::is_base_of<NSObject, NSString>{} is false there so the overloads defined for Objective-C types weren't getting enabled. * Add explicit tests for StringFormat using Objective-C objects * Add explicit tests for HasStdHash
* Remove nearly all usages of WrapNSStringNoCopy (#1351)Gravatar Gil2018-05-30
|
* Allow repeated entries in Value proto. (#1346)Gravatar rsgowman2018-05-30
| | | | | | | Normally, this would be unexpected, as only a single entry in the Value proto *should* be present. However, the proto docs state that parsers should be able to handle repeated fields. (In the case of repeated fields, the last one "wins".)
* Handle deserializing BatchGetDocumentsResponse error case... (#1344)Gravatar rsgowman2018-05-29
| | | | ... where neither 'found' nor 'missing' fields set.
* "Handle" BatchGetDocumentsResponse.transaction (by ignoring it) (#1318)Gravatar rsgowman2018-05-28
|
* Fix Objective-C logging (#1322)Gravatar Gil2018-05-23
|
* Deserialize NoDocument instances (#1311)Gravatar rsgowman2018-05-23
| | | | | | Note that it isn't possible to *serialize* NoDocuments. Still TODO: - Error handling
* Reimplement C++ logging (#1313)Gravatar Gil2018-05-23
| | | | | | | * Add direct support for formatting Objective-C objects * Rewrite log.h * Convert FSTWarn to LOG_WARN * Convert FSTLog to LOG_DEBUG * Remove FSTLogger
* Remove extraneous braces (#1315)Gravatar Gil2018-05-22
|
* Add a HARD_ASSERT C++ assertion macro (#1304)Gravatar Gil2018-05-22
| | | | | | * Add HARD_ASSERT * Use HARD_ASSERT * Remove FIREBASE_ASSERT * Remove StringPrintf
* [De]serialize non-empty Document instances (#1284)Gravatar rsgowman2018-05-22
| | | | | | | * [De]serialize non-empty Document instances Still TODO: - NoDocument - ErrorHandling
* fix build for Firestore copybara import (#1308)Gravatar zxu2018-05-22
| | | | | | * fix "target of using declaration conflicts with declaration already in scope" * fix "call to implicitly-deleted copy constructor of *unique_ptr*"
* Add a C++ native StringFormat (#1289)Gravatar Gil2018-05-21
| | | | * Add StringFormat * Use StringFormat
* fix lint to run copybara (#1290)Gravatar zxu2018-05-17
| | | | | | * fix lint to run copybara * address changes
* Refactoring serializer.cc (#1281)Gravatar rsgowman2018-05-16
| | | | Mostly to make existing methods a bit more general to support followup PR (which will allow encoding/decoding documents with contents.)
* [De]serialize empty Document instances (#1262)Gravatar rsgowman2018-05-15
| | | | | | | | | * [De]serialize empty Document instances Still TODO: - non-empty - NoDocument - ErrorHandling
* Trivial/noop fix to the serializer (#1264)Gravatar rsgowman2018-05-14
| | | | | | | | | | | Was using google_firestore_v1beta1_MapValue_FieldsEntry_key_tag to tag the key/value pair. (But that tag should be used for the *key* of the key/value pair, not the pair itself.) Switched to using google_firestore_v1beta1_MapValue_fields_tag. This previously worked anyways by coincidence. These two values happen to be the same. (But it caused me all sorts of confusion as I adapted this for Document contents.)
* Firestore C++: make FSTDispatchQueue delegate to C++ implementation (#1240)Gravatar Konstantin Varlamov2018-05-11
| | | | | FSTDispatchQueue now doesn't contain any logic of its own and instead just passes through all method calls to AsyncQueue (backed by an ExecutorLibdispatch).
* Refactor serializer (#1250)Gravatar rsgowman2018-05-11
| | | | | Moved Tag, Reader, Writer from serializer.cc's anon namespace to firebase::firestore::nanopb This should be bug-for-bug compatible. No changes were made to the moved methods.
* Add missing tests to the Firestore project (#1254)Gravatar Gil2018-05-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix order of project elements * Add immutable container tests to the Firestore project * Fix style problems in TransformOperations * Method names should have an initial upper case character (except getters/setters) * Pointers bind to the type not the name in C++ * Fix unsigned/signed comparison warning * Make transform_operations.h Objective-C++ only It turns out that you can't conditionally define virtual methods. This causes multiple versions of the vtable to be emitted and when the linker resolves all the vtable definitions for a class it picks one arbitrarily causing failures for callers that expect some of the conditional methods to be present. * Add precondition_test and field_mask_test to the project * Add field_transform_test and transform_operations_test to the project * Clean up missing newline/excess comments * Use braced initialization to avoid linter false positive on std::transform
* Remove final vestiges of FSTSnapshotVersion (#1253)Gravatar Gil2018-05-09
|
* [De]serialize Timestamps via the remote Serializer (#1233)Gravatar rsgowman2018-05-09
|
* Firestore C++: in AsyncQueue, use steady_clock instead of system_clock. (#1246)Gravatar Konstantin Varlamov2018-05-09
| | | | | This should prevent weird bugs due to system time readjustments. Because operations are scheduled relative to now, the fact that the resulting timepoint isn't in Unix epoch shouldn't matter.
* Firestore C++: compile ExecutorLibdispatch in Objective-C++ mode (#1237)Gravatar Konstantin Varlamov2018-05-08
| | | | | | | | dispatch_queue_t is defined differently in libdispatch depending on whether the library header is being include from Objective-C (or Objective-C++) code, or else from C or C++ code. Make sure that all source files in Firestore that include executor_libdispatch.h are compiled in the same mode (Objective-C++) to avoid linker errors.
* Backport array contains / transform improvements from Web. (#1242)Gravatar Michael Lehenbauer2018-05-08
|
* C++ migration: add AsyncQueue, the C++ version of FSTDispatchQueue (#1176)Gravatar Konstantin Varlamov2018-05-07
| | | | | | | | | | | | AsyncQueue is a queue that executes given operations asynchronously, enforcing that only a single operation is executing at any given time, and that in-progress operations don't spawn more operations. The actual execution is delegated to a platform-specific executor. Executor is an interface for a FIFO queue that executes given operations serially. Two implementations of Executor, one using libdispatch and the other using C++11 standard library, are provided. AsyncQueue is not used anywhere in the code base at this point.
* Make BasePath hash directly as a range (#1232)Gravatar Gil2018-05-06
| | | | | Remove BasePath.Hash() Objective-C compatibility method Make DocumentKey's hasher use BasePath's segment-based hash code.