| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
|
|
|
| |
* Remove extraneous firebase_firestore_util_async_queue target
* Remove unimplemented declaration in string_util.h
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
| |
|
|
|
|
|
|
|
| |
* Add direct support for formatting Objective-C objects
* Rewrite log.h
* Convert FSTWarn to LOG_WARN
* Convert FSTLog to LOG_DEBUG
* Remove FSTLogger
|
|
|
|
|
|
| |
* Add HARD_ASSERT
* Use HARD_ASSERT
* Remove FIREBASE_ASSERT
* Remove StringPrintf
|
|
|
|
| |
* Add StringFormat
* Use StringFormat
|
|
|
|
|
|
| |
* fix lint to run copybara
* address changes
|
|
|
|
|
| |
FSTDispatchQueue now doesn't contain any logic of its own and instead
just passes through all method calls to AsyncQueue (backed by an
ExecutorLibdispatch).
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This is good enough to make it possible for the new C++ code to
interoperate with existing Objective-C code where `-hash` is required if
you override `-isEqual:`.
|
|
|
|
|
|
| |
* Add a simple range adapter.
* Add SortedMap::keys
* Add SortedMap::keys_from
* Add SortedMap::keys_in
|
|
|
|
|
|
| |
* Standardize method ordering across sorted maps
* Add SortedMap::find
* Add SortedMap::find_index
* Add SortedMap::contains
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add a .clang-tidy configuration for Firestore C++
* Fix clang-tidy warnings
* typedef -> using
* const ref + rvalue ref -> pass by value
* NULL -> nullptr
* remove useless default initializations
* remove useless const value-type parameter declarations (definitions
can still use them)
* use auto instead of repeating types in a cast
* Fix typos
* Address use of static method through instance warnings
* Address use after move warnings
|
| |
|
|
|
| |
Remove a duplicate macro definition and clean up an extra const clang-tidy complains about.
|
|
|
|
| |
Since we now include cmath rather than math.h, isnan is now named
std::isnan.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* lint.sh now lints Objective-C++ too
* cpplint checks system-style includes that should be user-style
This prevents it from recognizing project sources as if they were C
system headers and then complaining that they're in the wrong place.
* cpplint checks #imports and #includes
* cpplint checks that C++ system headers aren't #imported
* cpplint checks for C system headers that could be C++ system headers
* cpplint checks that Objective-C sources include their headers
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* Prepare for TreeSortedMap
* Factor out SortedMapBase
* Move ArraySortedMap to impl
* Factor out SortedMap testing utilities
* Add a minimal TreeSortedMap
* Add the public SortedMap type
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Change CredentialsProvider::TokenListener to use StatusOr
Rather than a token plus error code/msg.
* Eliminate the concept of an invalid Token
Instead, we'll just use StatusOr<Token>. Note that unauthenticated
tokens are handled as a special case; they're created via:
Token::Unauthenticated()
and are otherwise "valid", though attempting to retrieve the raw token
on one of these tokens will cause an assertion failure.
|
|
|
|
| |
* Pull in status files from tensorflow
* Add missing dependency to immutable library
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* naively remove FSTPath import and source/test files.
* port FieldPath, part I
* port FieldPath, part II
* port ResourcePath, part I
* port ResourcePath, part II
* the grand commit to fix build errors
* use testutil:: helper instead of those from FSTHelpers
* fix test and lint
* use c_str in errmsg directly
* fix
* fix
* make code clean
* fix integration test I missed
* fix to avoid naming collision in preprocessor
* address changes
* address changes
* address changes
* fix: fieldMask are actually shared with different context.
* address changes
* address changes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Fix ArraySortedMap.ChecksSize test (when NDEBUG is enabled)
assert() is a noop when NDEBUG is defined (i.e. during production
builds) so the size assertion check doesn't occur. Assuming we want this
check even during prod use, I've switched assert to FIREBASE_ASSERT.
* s/FIREBASE_ASSERT/FIREBASE_DEV_ASSERT/g in ordered_code.cc
This keeps the behaviour in line with the original (which purposely
differs if NDEBUG is defined or not.) Discovered due to the test suite
(correctly) breaking during a prod build.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* lazy replacing FST(Firebase)CredentialsProvider by (Firebase)CredentialsProvider
* lazy replacing FSTUser by User
* adding error-code parameter to TokenListener
* actually use const user& instead of pointer; also add an error util
* add HashUser and pass into the unordered_map
* use User in test
* use c++ CredentialsProvider and subclass in test
* fix unit test
* use explicit capture in lambda instead of capture all by reference
* cache currentUser explicitly when reset sync engineer test driver
* objc object should be captured by value in lambda
* replacing Auth/FSTUser by C++ auth implementation
* address changes
* replacing FSTGetTokenResult by C++ Token implementation
* address changes
* fix unintentional change in merging
* patch the change in objc Auth up-stream
* somehow, the lambda-version of set-user-change-listener does not work... fallback to block
* address changes
* fix another const& v.s. dispatch bug
* fix more const& v.s. dispatch bug zxu123 committed
* fix a bad sync line
* address changes
* address change
* address change
* fix upstream change from merge
* fix upstream changes
* Suggested fixes for cpp/port_auth (#846)
* Get rid of MockDatastore factory
This avoids the need to statically allocate (and leak) a credentials
provider
* Use absl::make_unique
std::make_unique technically does not exist until C++14.
* #include <utility> for std::move
* Use std::future for the initial user
* fix style
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
| |
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).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Import iterator_adapters from google3
* Remove -Wconversion which is annoyingly hard to satisfy
* Strip dependency on absl_container from iterator_adapters_test
* Format and lint iterator_adaptors
* More flexible copyright checking in Travis
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Move -fvisibility-inlines-hidden from common_flags to cxx_flags
This option isn't supported by C (and causes the build to fail under
at least rodete).
Manifested error was:
```
-- Looking for include file openssl/rand.h
-- Looking for include file openssl/rand.h - not found
CMake Error at core/src/firebase/firestore/util/CMakeLists.txt:94 (message):
No implementation for SecureRandom available.
-- Configuring incomplete, errors occurred!
```
which is completely misleading. :(
* Fix exception include for std::logic_error
Was causing compiler error on (at least) rodete.
(http://en.cppreference.com/w/cpp/error/logic_error suggests that
stdexcept is the correct header.)
* Remove 'const' from vector contents.
vectors cannot contain const objects as the contained objects are
required to be assignable and copy constructable. (Not *quite* strictly
true; since c++11, this requirement now depends on the operations
performed on the container. But my compiler objects at any rate.)
http://en.cppreference.com/w/cpp/container/vector
https://stackoverflow.com/questions/8685257/why-cant-you-put-a-const-object-into-a-stl-container
* Add brackets as suggested (required) by my compiler.
* Add missing include
For LLONG_MIN, etc.
* Enable gnu extension to c++11 for firestore/util *test*.
We disable them by default (in cmake/CompilerSetup.cmake) but our tests
requires hexidecimal floating point, which is not supported in c++11
(though is supported in C++17, gnu++11, and others).
http://en.cppreference.com/w/cpp/language/floating_literal
https://bugzilla.redhat.com/show_bug.cgi?id=1321986
* Fix printf format for uint64_t
http://en.cppreference.com/w/cpp/types/integer
https://stackoverflow.com/questions/9225567/how-to-print-a-int64-t-type-in-c
* Allow 0 length printf template strings in tests.
* Get rid of a multi line comment.
The backslash is apparently interpreted by the compiler cause the next
line to be ignored too. In this case, the next line is (currently) a
comment, and would be ignored anyways. (But that doesn't stop the
compiler from yelling.)
* Run ./scripts/style.sh
|
|
|
|
| |
* normalize bits
* normalize ordered_code
|
|
|
|
| |
* refactoring string_util
* port string_util to iOS
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reimplements our comparison functions as C++ Comparators and then provides compatibility shims for interoperating with existing Objective-C usage.
A few specialized comparators aren't suitable for porting but only have a single usage (e.g. CompareBytes for comparing NSData * instances). In these cases I've moved them into the caller.
* Use int32_t for typeof(ID) in FSTDocumentReference
* Migrate callers of FSTComparison.h to Objective-C++
* Port comparison to C++
* Migrate usages of FSTComparison.h to C++ equivalents
* Remove FSTComparison
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add CMake platform detection logic for SecureRandom
Now only builds secure_random_arc4random.cc if available.
Remove firebase/firestore/base/port.h. Nothing else was in that
directory.
* Add a SecureRandom implementation that uses OpenSSL
This is usable on Linux, Windows, and Android
* Properly check return from RAND_bytes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Rewrite cc_test to take named arguments
Cut down on build file verbosity by having cc_test take SOURCES and
DEPENDS. The separate invocation of target_link_libraries is no longer
necessary.
* Add a cc_library rule to parallel cc_test
This cuts down on build file verbosity.
* Automatically add OBJC_FLAGS to cc_libraries if applicable
* Exclude platform-specific libraries from 'all'
This is makes it possible to declare this kind of library
unconditionally. Usage within a test or as a dependency will actually
trigger building.
* Restore secure_random_test.cc; clean-up comments
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* implement FieldValue for null and boolean.
* refactoring to use union type instead of poly
* refactor using union design intead of poly
* refactoring to use anonymous union and fix styles
* small fix
* add field_value_test to the project
* fix warning of cmake and fix style
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Misc style.sh fixes
* Allow test-only to use a revision; to check your changes since
master:
./scripts/style.sh test-only master
* Avoid diffing deleted files
* 80 columns
* Fix C++ lint errors
|
|
|
|
|
|
| |
* Enable warnings when building with GCC or clang
* Fix warnings
|
|
|
|
| |
Run style.sh (w/ clang-format version 6)
|