| Commit message (Collapse) | Author | Age |
|
|
|
|
|
| |
* Avoid wrapping and rewrapping NSStrings when constructing DatabaseId
* Shorten DatabaseId::kDefaultDatabaseId
|
| |
|
|
|
|
| |
Reduces noise while running valgrind so that I can see the leaks that
I'm introducing. :/
|
| |
|
|
|
|
|
|
| |
Xcode has starting warning about us implicitly retaining self references
within blocks. This commit fixes it by explicitly mentioning self. No
real changes are introduced here; this is effectively just making
implicit behaviour explicit.
|
|
|
|
| |
- FSTTimestamp is now FIRTimestamp, under Firestore/Source/{Public,API}. This is a temporary solution; eventually, FIRTimestamp is supposed to live somewhere under Firebase;
- move most internal Timestamp methods to the public header (the only exception is ISOString).
|
|
|
|
|
|
|
|
|
|
|
|
| |
* [En|De]codeUnsignedVarint -> [En|De]codeVarint
The 'unsigned' portion was misleading, as these varints work with both
signed and unsigned integers. (The 'signed' varints also work with both
signed and unsigned integers, but use zig-zag encoding so that negative
numbers are encoded more efficiently. Note that 'signed' varints aren't
used in the Value proto, so won't appear in the serializer class for at
least the short term.)
Added some docstrings to help disambiguate this.
|
|
|
|
|
|
|
|
|
|
|
| |
* Fix b/73167987: Upon receiving a permanent write error when we had additional
pendingWrites to send, we were restarting the stream with a new delegate and
then immediately setting the delegate to nil, causing the stream to ignore
all GRPC events for the stream.
* Fix b/73382103: We were attempting to gracefully teardown the write stream (i.e.
send an empty WriteRequest) even when the stream was already failed due
to an error. This caused no harm other than log pollution, but I fixed it.
* Use -[GRPCCall setResponseDispatchQueue] to dispatch GRPC callbacks directly onto the Firestore worker queue. This saves a double-dispatch and simplifies our logic.
* Add stricter assertions regarding stream state now that dispatch queue / callback filter race conditions are eliminated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* replacing Auth/FSTUser by C++ auth implementation
* address changes
* replacing FSTGetTokenResult by C++ Token implementation
* address changes
* address changes
* fix another const& v.s. dispatch bug
* fix more const& v.s. dispatch bug zxu123 committed
* fix
* passing by value in callback
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Basically a port of https://github.com/firebase/firebase-js-sdk/commit/a1e346ff93c6cbcc0a1b3b33f0fbc3a7b66e7e12 and https://github.com/firebase/firebase-js-sdk/commit/fce4168309f42aa038125f39818fbf654b65b05f
* Introduces a DelayedCallback helper class in FSTDispatchQueue to encapsulate delayed callback logic.
* Adds cancellation support.
* Updates the idle timer in FSTStream to use new cancellation support.
* Adds a FSTTimerId enum for identifying delayed operations on the queue and uses it to identify our existing backoff and idle timers.
* Added containsDelayedCallback: and runDelayedCallbacksUntil: methods to FSTDispatchQueue which can be used from tests to check for the presence of a callback or to schedule them to run early.
* Removes FSTTestDispatchQueue and changes idle tests to use new test methods.
|
|
|
|
|
|
| |
* replacing Auth/FSTUser by C++ auth implementation
* address changes
|
|\ |
|
| |
| |
| |
| | |
we're going to. (#790)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Build (grpc's) nanopb with -DPB_FIELD_16BIT
We require (at least) 16 bit fields. (By default, nanopb uses 8 bit
fields, ie allowing up to 256 field tags.)
Also note that this patch adds this to grpc's nanopb, rather than to our
nanopb. We'll need to eventually either:
a) we instruct grpc to use our nanopb
b) we rely on grpc's nanopb instead of using our own.
(^ marked as a TODO for now.)
* Add some dependant protos
Imported from protobuf. Nanopb requires these to be present (though
anything using libprotobuf does not, as these are already built into
that.)
* Add generated nanopb protos based off of newly added proto definitions
* Build the nanopb protos
* Serialize and deserialize null
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Implement schema versions
* Style fixes
* newlines, copyrights, assumptions
* Fix nullability
* Raw ptr -> shared_ptr
* kVersionTableGlobal -> kVersionGlobalTable
* Drop utils, move into static methods
* Drop extra include
* Add a few more comments
* Move version constant into migrations file
* formatting?
* Fix comment
* Split add and update queryData
* Work on adding targetCount
* More work on count
* Using shared_ptr
* Implement count for query cache
* use quotes
* Add cast
* Styling
* Revert year bump in copyright
* Add adversarial key to migration test
* Add comment
* Fix style
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* implement SnapshotVersion and test
* update project
* implement MaybeDocument and test
* move snapshot-version from core to model
* fix a bug
* implement Document and test
* implement NoDocument
* adding type tag and fix style
* fix a few bugs, discovered after merging and test run.
* add assert to check FieldValue type and more test for comparision.
* address changes
* allow moving FieldValue to construct Document.
* address changes
* add document tests to project
* use std::less convention
* make Type::Unknown static initializer
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* update FieldValue of type Reference
* address change
* fix bad path string literal in test
* use ReferenceValue and qualified name
|
| |
| |
| |
| | |
Incomplete, and what does exist in still slightly vague. It's expected
that this will change.
|
| |
| |
| |
| |
| | |
Also move kDocumentKeyPath to the only point of usage - make it a static
member variable of FieldPath.
|
| |
| |
| | |
* implement SnapshotVersion and test
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Implement firestore/auth/user
* add user to project and some fixes
* implement firestore/auth/{credentials_provider,empty_credentials_provider}
* implement firestore/auth/firebase_credentials_provider
* refactoring firebase_credentials_provider and add (disabled but working) unit test
* add auth test to project
* address changes
* small fix to style and project
* fix the firebase_credentials_provider_test
* fix style
* address changes
* revert the change to static mutex_
* remove my custom plist path
* fix style
* address changes
* refactoring FirebaseCredentialsProvider to fix the issue w.r.t. auth global dispatch queue
* add /*force_refresh=*/ tag to bool literal for style purpose
* Use a shared_ptr/weak_ptr handoff on FirebaseCredentialsProvider (#778)
* Revert "refactoring FirebaseCredentialsProvider to fix the issue w.r.t. auth global dispatch queue"
This reverts commit 87175a4146267d403a774f138b85f8d3b532fa4b.
* Use a shared_ptr/weak_ptr handoff on FirebaseCredentialsProvider
This avoids any problems with callsbacks retaining pointers to objects
destroyed by a C++ destructor
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Fix nanopb (in cmake build)
Look for binaries in the src dir (since that's where we build now.) This
error would be masked if a previous build had completed prior to
switching nanopb to build out of src.
Also, don't patch the protoc path multiple times. This could be
triggered by (eg) 'make && make clean && make'.
* Add resource_path.{h,cc} to the cmake build
* Fix signed/unsigned int comparison warnings
* let Travis run for `CMake` test and `lint.sh`
* Ensure FieldValue tag_ is initialized during cp/mv ctor.
Otherwise, the assignment operator attempts to deallocate based on the
(uninitialized) tag_ variable, posssibly leading to segfaults.
* address change
* fix trailing space
* address change
* moving Firestore checks closer together
* Fix tests that throw exceptions.
The (previous) tests checked to ensure that an abort() occurs, but if
ABSL_HAVE_EXCEPTIONS is defined on non-macos (which is currently the
default) then the assertions will throw a std::logic_error rather than
abort()ing.
On macos, an exception is thrown too, but the exception doesn't derrive
from std::exception, so ASSERT_DEATH_* doesn't catch it (hence why
ASSERT_DEATH_* actually works.)
To resolve this, I've switched to ASSERT_ANY_THROW.
* ./scripts/lint.sh
* Move FieldValue::tag_ initializer to be in class.
* check Travis ulimit
* check travis limit
* set make -j 200 instead of unlimited
* use cpu core number instead of 200
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Fix nanopb (in cmake build)
Look for binaries in the src dir (since that's where we build now.) This
error would be masked if a previous build had completed prior to
switching nanopb to build out of src.
Also, don't patch the protoc path multiple times. This could be
triggered by (eg) 'make && make clean && make'.
* Add resource_path.{h,cc} to the cmake build
* Fix signed/unsigned int comparison warnings
* Ensure FieldValue tag_ is initialized during cp/mv ctor.
Otherwise, the assignment operator attempts to deallocate based on the
(uninitialized) tag_ variable, posssibly leading to segfaults.
* Fix tests that throw exceptions.
The (previous) tests checked to ensure that an abort() occurs, but if
ABSL_HAVE_EXCEPTIONS is defined on non-macos (which is currently the
default) then the assertions will throw a std::logic_error rather than
abort()ing.
On macos, an exception is thrown too, but the exception doesn't derrive
from std::exception, so ASSERT_DEATH_* doesn't catch it (hence why
ASSERT_DEATH_* actually works.)
To resolve this, I've switched to ASSERT_ANY_THROW.
|
|/ |
|
|
|
|
|
|
| |
* Update FIRFirestore.h
* Provide full command to enable debugging.
|
|
|
|
|
|
|
|
|
|
|
| |
Xcode prior to 8.3 does not accept an explicitly defaulted constructor
(`= default`) for the purposes of default initializing a const object.
This fixes a build failure under Xcode 8.2:
```
Firestore/core/src/firebase/firestore/model/field_path.cc:144:26: error: default initialization of an object of const type 'const firebase::firestore::model::FieldPath' without a user-provided default constructor
static const FieldPath empty_path;
```
|
| |
|
|
|
| |
Similar to Objective-C, FieldPath and ResourcePath share most of their interface (and implementation) by deriving from BasePath (using CRTP, so that factory methods in BasePath can return an instance of the derived class).
|
|\
| |
| | |
Integrate nanopb
|
|\ \
| | |
| | | |
Merge updated abseil-cpp to master
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
iOS code (#738)
* implement Firestore DatabaseInfo in C++
* temporary stash changes; blocking on the massive renaming of .m to .mm
* add database_info_test to project
* finish port DatabaseId and fix style, modular fixing DatabaseInfo
* port DatabaseInfo
* remove FSTDatabase{ID,Info} and their tests from project
* fix unit test
* use namespace alias
* use namespace alias, leftover
* address more changes
* refactoring to use raw pointer instead of value for property
* address changes
* remove self->
* fix style
* remove the name suffix Alloc
* fix a bug
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | | |
Add StrCat, StrJoin and the rest of //strings from abseil-cpp (#756)
From abseil-cpp version bf7fc9986e20f664958fc227547fd8d2fdcf863e
|
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Update abseil-cpp to a new upstream (#754)
Update to bf7fc9986e20f664958fc227547fd8d2fdcf863e
|
| |/ /
| | |
| | | |
From abseil-cpp version bf7fc9986e20f664958fc227547fd8d2fdcf863e
|
| | |
| | |
| | | |
Update to bf7fc9986e20f664958fc227547fd8d2fdcf863e
|
| | |
| | |
| | |
| | | |
Also regenerate the protos
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Use remote/serializer placeholder class as a hook for the test to ensure
nanopb headers can be found, and test can be linked.
|
| | |
| | |
| | |
| | | |
For use by nanopb (which otherwise doesn't know what to do with these.)
|
| | |
| | |
| | |
| | | |
100% machine generated (except adding of the license).
|
| |/
|/|
| |
| | |
Currently only supported on osx
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
I'm doing this to:
1) Experimentally see if it improves the flakiness we've been seeing in the Query Conformance Tests.
2) Insulate us from the fact that GRPC seems to take a /minimum/ of 10 seconds to reconnect (at least in some cases) after a connection failure.
I've opened b/72864027 to revisit this in the future.
|
| | |
|
| |
| |
| |
| |
| | |
This is dead code.
I think it was probably useful in the RTDB because of the way it notified of changes, but we give changes with indexes in Firestore so I think we don't need it.
|
| |
| |
| |
| |
| |
| | |
* Implement ArraySortedMap.remove
* Implement ArraySortedMap.insert
* Ensure ArraySortedMap.insert avoids copying on duplicates
* Port more ArraySortedMapTests
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Move all Firestore files to Objective-C++
* Update project file references
* Don't use module imports from Objective-C++
* Use extern "C" for C-accessible globals
* Work around more stringent type checking in Objective-C++
* NSMutableDictionary ivars aren't implicitly casted to NSDictionary
* FSTMaybeDocument callback can't be passed a function that accepts
FSTDocument
* NSComparisonResult can't be multiplied by -1 without casting
* Add a #include <inttypes.h> where needed
* Avoid using C++ keywords as variables
* Remove #if __cplusplus guards
|