OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stdlib.h> | 5 #include <stdlib.h> |
6 #include <string.h> | 6 #include <string.h> |
7 | 7 |
8 #include "mojo/public/cpp/bindings/lib/message_builder.h" | 8 #include "mojo/public/cpp/bindings/lib/message_builder.h" |
9 #include "mojo/public/cpp/bindings/lib/message_queue.h" | 9 #include "mojo/public/cpp/bindings/lib/message_queue.h" |
10 #include "mojo/public/cpp/bindings/lib/router.h" | 10 #include "mojo/public/cpp/bindings/lib/router.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 size_t payload_size = strlen(text) + 1; // Plus null terminator. | 31 size_t payload_size = strlen(text) + 1; // Plus null terminator. |
32 internal::ResponseMessageBuilder builder(name, payload_size, request_id); | 32 internal::ResponseMessageBuilder builder(name, payload_size, request_id); |
33 memcpy(builder.buffer()->Allocate(payload_size), text, payload_size); | 33 memcpy(builder.buffer()->Allocate(payload_size), text, payload_size); |
34 builder.Finish(message); | 34 builder.Finish(message); |
35 } | 35 } |
36 | 36 |
37 class MessageAccumulator : public MessageReceiver { | 37 class MessageAccumulator : public MessageReceiver { |
38 public: | 38 public: |
39 explicit MessageAccumulator(internal::MessageQueue* queue) : queue_(queue) {} | 39 explicit MessageAccumulator(internal::MessageQueue* queue) : queue_(queue) {} |
40 | 40 |
41 virtual bool Accept(Message* message) override { | 41 bool Accept(Message* message) override { |
42 queue_->Push(message); | 42 queue_->Push(message); |
43 return true; | 43 return true; |
44 } | 44 } |
45 | 45 |
46 private: | 46 private: |
47 internal::MessageQueue* queue_; | 47 internal::MessageQueue* queue_; |
48 }; | 48 }; |
49 | 49 |
50 class ResponseGenerator : public MessageReceiverWithResponder { | 50 class ResponseGenerator : public MessageReceiverWithResponder { |
51 public: | 51 public: |
52 ResponseGenerator() {} | 52 ResponseGenerator() {} |
53 | 53 |
54 virtual bool Accept(Message* message) override { return false; } | 54 bool Accept(Message* message) override { return false; } |
55 | 55 |
56 virtual bool AcceptWithResponder(Message* message, | 56 bool AcceptWithResponder(Message* message, |
57 MessageReceiver* responder) override { | 57 MessageReceiver* responder) override { |
58 EXPECT_TRUE(message->has_flag(internal::kMessageExpectsResponse)); | 58 EXPECT_TRUE(message->has_flag(internal::kMessageExpectsResponse)); |
59 | 59 |
60 return SendResponse(message->name(), message->request_id(), responder); | 60 return SendResponse(message->name(), message->request_id(), responder); |
61 } | 61 } |
62 | 62 |
63 bool SendResponse(uint32_t name, | 63 bool SendResponse(uint32_t name, |
64 uint64_t request_id, | 64 uint64_t request_id, |
65 MessageReceiver* responder) { | 65 MessageReceiver* responder) { |
66 Message response; | 66 Message response; |
67 AllocResponseMessage(name, "world", request_id, &response); | 67 AllocResponseMessage(name, "world", request_id, &response); |
68 | 68 |
69 bool result = responder->Accept(&response); | 69 bool result = responder->Accept(&response); |
70 delete responder; | 70 delete responder; |
71 return result; | 71 return result; |
72 } | 72 } |
73 }; | 73 }; |
74 | 74 |
75 class LazyResponseGenerator : public ResponseGenerator { | 75 class LazyResponseGenerator : public ResponseGenerator { |
76 public: | 76 public: |
77 LazyResponseGenerator() : responder_(nullptr), name_(0), request_id_(0) {} | 77 LazyResponseGenerator() : responder_(nullptr), name_(0), request_id_(0) {} |
78 | 78 |
79 virtual ~LazyResponseGenerator() { delete responder_; } | 79 ~LazyResponseGenerator() override { delete responder_; } |
80 | 80 |
81 virtual bool AcceptWithResponder(Message* message, | 81 bool AcceptWithResponder(Message* message, |
82 MessageReceiver* responder) override { | 82 MessageReceiver* responder) override { |
83 name_ = message->name(); | 83 name_ = message->name(); |
84 request_id_ = message->request_id(); | 84 request_id_ = message->request_id(); |
85 responder_ = responder; | 85 responder_ = responder; |
86 return true; | 86 return true; |
87 } | 87 } |
88 | 88 |
89 bool has_responder() const { return !!responder_; } | 89 bool has_responder() const { return !!responder_; } |
90 | 90 |
91 void Complete() { | 91 void Complete() { |
92 SendResponse(name_, request_id_, responder_); | 92 SendResponse(name_, request_id_, responder_); |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 | 212 |
213 EXPECT_TRUE(generator.has_responder()); | 213 EXPECT_TRUE(generator.has_responder()); |
214 } | 214 } |
215 | 215 |
216 generator.Complete(); // This should end up doing nothing. | 216 generator.Complete(); // This should end up doing nothing. |
217 } | 217 } |
218 | 218 |
219 } // namespace | 219 } // namespace |
220 } // namespace test | 220 } // namespace test |
221 } // namespace mojo | 221 } // namespace mojo |
OLD | NEW |