19
19
#include < memory>
20
20
#include < utility>
21
21
22
+ #include " Firestore/core/src/core/pipeline_util.h"
22
23
#include " Firestore/core/src/remote/serializer.h"
23
24
24
25
namespace firebase {
@@ -27,16 +28,35 @@ namespace api {
27
28
28
29
RealtimePipeline::RealtimePipeline (
29
30
std::vector<std::shared_ptr<EvaluableStage>> stages,
30
- remote::Serializer serializer)
31
- : stages_(std::move(stages)), serializer_(serializer) {
31
+ std::unique_ptr<remote::Serializer> serializer)
32
+ : stages_(std::move(stages)), serializer_(std::move(serializer)) {
33
+ this ->rewritten_stages_ = core::RewriteStages (this ->stages ());
34
+ }
35
+
36
+ RealtimePipeline::RealtimePipeline (const RealtimePipeline& other)
37
+ : stages_(other.stages_),
38
+ rewritten_stages_ (other.rewritten_stages_),
39
+ serializer_(std::make_unique<remote::Serializer>(
40
+ other.serializer_->database_id ())) {
41
+ }
42
+
43
+ RealtimePipeline& RealtimePipeline::operator =(const RealtimePipeline& other) {
44
+ if (this != &other) {
45
+ stages_ = other.stages_ ;
46
+ rewritten_stages_ = other.rewritten_stages_ ;
47
+ serializer_ =
48
+ std::make_unique<remote::Serializer>(other.serializer_ ->database_id ());
49
+ }
50
+ return *this ;
32
51
}
33
52
34
53
RealtimePipeline RealtimePipeline::AddingStage (
35
54
std::shared_ptr<EvaluableStage> stage) {
36
55
auto copy = std::vector<std::shared_ptr<EvaluableStage>>(this ->stages_ );
37
56
copy.push_back (stage);
38
57
39
- return {copy, serializer_};
58
+ return {copy,
59
+ std::make_unique<remote::Serializer>(serializer_->database_id ())};
40
60
}
41
61
42
62
const std::vector<std::shared_ptr<EvaluableStage>>& RealtimePipeline::stages ()
@@ -49,13 +69,8 @@ RealtimePipeline::rewritten_stages() const {
49
69
return this ->rewritten_stages_ ;
50
70
}
51
71
52
- void RealtimePipeline::SetRewrittentStages (
53
- std::vector<std::shared_ptr<EvaluableStage>> stages) {
54
- this ->rewritten_stages_ = std::move (stages);
55
- }
56
-
57
- EvaluateContext RealtimePipeline::evaluate_context () {
58
- return EvaluateContext (&serializer_);
72
+ EvaluateContext RealtimePipeline::evaluate_context () const {
73
+ return EvaluateContext (serializer_.get ());
59
74
}
60
75
61
76
} // namespace api
0 commit comments