The reachability state is not (yet) used to determine whether it's possible to reconnect; rather, the its only use is to quickly end any existing connections. The benefit is potentially quicker reaction to network being disconnected than it would take for the connection to time out.
All proto targets (objc, cpp, nanopb) now depend on the proto sources,
so they'll be rebuilt if the proto sources change.
Also updated Firestore/Protos/README.md to reflect recent changes.
Also update travis config to build the protos. (Previously, cpp and
nanopb were rebuilt, since they're used in the cmake build. But objc was
not since it's not actually depended on by anything in cmake.)
* Rename nanopb/.../*.pb.c to nanopb/.../*.nanopb.c
This ensures that all generated nanopb files use the same (sub)
extension of nanopb. This matches up with nanopb's --extension
parameter (which will be enabled later in this PR.)
* Remove references to NANOPB_PROTOC_BIN
Which wasn't being used, and wasn't pointing to a valid protoc.
* Add ability to generate protos from cmake build.
Currently, it's an entirely manual process via 'generate_protos' target.
This target is not automatically run during a build.
See Firestore/Protos/build-protos.sh for expected usage.
* cleanup/update license in build-protos.sh
* Build grpc proto sources (objc only)
* Use 32bit nanopb fields (instead of 16)
To match xcode build, but also to allow google/api/annotations.proto to
compile. (A recent change to nanopb now enforces this.) This isn't
strictly necessary, since we don't make use of that proto, so we
could've simply removed it instead (and in fact, the objc protos do
exactly that) but matching the xcode build certainly seems worthwhile.
* Rebuild all proto sources
* Skip whitespace checks on protoc generated files
Stages, even when cut off early with if_cron, still take about two
minutes to run. The fuzz_test stage was waiting for all tests to
complete before starting, which was artificially adding two minutes to
every build.
Use a different method to keep this visually distinct from the rest.
* Added fuzzing script to run all fuzzing targets on cron jobs.
* Added travis fuzzing script and `FUZZING_DURATION` to control fuzzing time.
* Given a total fuzzing duration, select 1 target to run for half of
the duration, and divide the remaining duration over the rest of
targets equally.
* Make Firestore CMake a self-contained build
Now shell out to a sub-CMake to prepare depenencies without needing an
explciit superbuild structure. This makes the Visual Studio and CLion
projects driven from the CMake configuration actually usable.
* Move third-party dependencies to the top-level
* Move main.swift to BasicCompileTests.swift
* Remove SwiftBuildTest from the Podfile, Xcode project, build.sh
Add Firestore_SwiftTests_iOS, but only if building with Xcode 9 or
better.
* 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
This uses the newly-added allMutationBatchesAffectingDocumentKeys to find/deserialize all such batches in one go and then reuse the batches while processing a set of keys.
Also "fixed" BadFieldValueTagWithOtherValidTagsPresent test by changing
'false' to 'true'. Details: Depending on the version of nanopb, nanopb
would explicitly encode 'false', which shouldn't be done in proto3. When
it's explicitly encoded, the test worked properly. But when it was
(properly) dropped, the invalid tag is the only field that's actually
encoded, thus violating the assumptions of the test, leading to a test
failure. s/false/true fixes it, as now the boolean_value field is
(properly) encoded regardless of version.
* Make it possible to run style.sh on Linux
Needs clang-format in a nonstandard location, but can be made to work.
* Fix lint.sh on Linux
* Fix multiline comment error
This avoids a collision with the libprotobuf generated files.
Also removes the "well-known" cpp protos, relying on libprotobuf to supply these instead.
* Add a project sync script
* Give an error if the configuration references a group that doesn't exist
* Fix hard_assert_test reference
* Run sync_project to sort all project elements