Skip to content

Commit 0acec23

Browse files
wu-huia-maurice
authored andcommitted
Make snapshot from TransactionGetResult return by value.
This ensure C# DocumentSnapshot will own the C++ DocumentSnapshot when it is read from within a transaction. PiperOrigin-RevId: 334276809
1 parent 3282885 commit 0acec23

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

firestore/src/include/firebase/csharp/typemap_helper.h

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define FIREBASE_FIRESTORE_CLIENT_CPP_SRC_INCLUDE_FIREBASE_CSHARP_TYPEMAP_HELPER_H_
33

44
#include <string>
5+
#include <utility>
56

67
#include "firebase/firestore/document_reference.h"
78
#include "firebase/firestore/document_snapshot.h"
@@ -16,18 +17,34 @@ namespace firebase {
1617
namespace firestore {
1718
namespace csharp {
1819

19-
struct TransactionGetResult {
20-
DocumentSnapshot snapshot;
21-
Error error_code = Error::kErrorUnknown;
22-
std::string error_message;
20+
class TransactionGetResult {
21+
public:
22+
TransactionGetResult(DocumentSnapshot snapshot, Error error_code,
23+
std::string error_message)
24+
: snapshot_(std::move(snapshot)),
25+
error_code_(error_code),
26+
error_message_(std::move(error_message)) {}
27+
28+
DocumentSnapshot TakeSnapshot() { return std::move(snapshot_); }
29+
30+
Error error_code() const { return error_code_; }
31+
32+
const std::string& error_message() const { return error_message_; }
33+
34+
private:
35+
DocumentSnapshot snapshot_;
36+
Error error_code_ = Error::kErrorUnknown;
37+
std::string error_message_;
2338
};
2439

2540
TransactionGetResult TransactionGet(Transaction* transaction,
2641
const DocumentReference& document) {
27-
TransactionGetResult result;
28-
result.snapshot =
29-
transaction->Get(document, &result.error_code, &result.error_message);
30-
return result;
42+
Error error_code = Error::kErrorUnknown;
43+
std::string error_message;
44+
DocumentSnapshot snapshot =
45+
transaction->Get(document, &error_code, &error_message);
46+
return TransactionGetResult(std::move(snapshot), error_code,
47+
std::move(error_message));
3148
}
3249

3350
} // namespace csharp

0 commit comments

Comments
 (0)