Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(378)

Side by Side Diff: mojo/public/cpp/bindings/lib/message_builder.h

Issue 1447273002: Mojo Log service and a thread-safe client library. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix destructor race condition in log_client.cc; add some comments Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_BUILDER_H_ 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_BUILDER_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_BUILDER_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_BUILDER_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" 10 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h"
11 #include "mojo/public/cpp/bindings/lib/message_internal.h" 11 #include "mojo/public/cpp/bindings/lib/message_internal.h"
12 #include "mojo/public/cpp/bindings/message.h" 12 #include "mojo/public/cpp/bindings/message.h"
13 13
14 namespace mojo { 14 namespace mojo {
15 class Message; 15 class Message;
16 16
17 namespace internal {
18
19 class MessageBuilder { 17 class MessageBuilder {
20 public: 18 public:
21 MessageBuilder(uint32_t name, size_t payload_size); 19 MessageBuilder(uint32_t name, size_t payload_size);
22 ~MessageBuilder(); 20 ~MessageBuilder();
23 21
24 Buffer* buffer() { return &buf_; } 22 // TODO(vardhan): |buffer()| is internal and only consumed by internal classes
23 // and unittests. Consider making it private + friend class its consumers?
24 internal::Buffer* buffer() { return &buf_; }
25 Message* message() { return &message_; } 25 Message* message() { return &message_; }
26 26
27 protected: 27 protected:
28 MessageBuilder(); 28 MessageBuilder();
29 void Initialize(size_t size); 29 void Initialize(size_t size);
30 30
31 Message message_; 31 Message message_;
32 FixedBuffer buf_; 32 internal::FixedBuffer buf_;
33 33
34 MOJO_DISALLOW_COPY_AND_ASSIGN(MessageBuilder); 34 MOJO_DISALLOW_COPY_AND_ASSIGN(MessageBuilder);
35 }; 35 };
36 36
37 class MessageWithRequestIDBuilder : public MessageBuilder { 37 class MessageWithRequestIDBuilder : public MessageBuilder {
38 public: 38 public:
39 MessageWithRequestIDBuilder(uint32_t name, 39 MessageWithRequestIDBuilder(uint32_t name,
40 size_t payload_size, 40 size_t payload_size,
41 uint32_t flags, 41 uint32_t flags,
42 uint64_t request_id); 42 uint64_t request_id);
43 }; 43 };
44 44
45 class RequestMessageBuilder : public MessageWithRequestIDBuilder { 45 class RequestMessageBuilder : public MessageWithRequestIDBuilder {
46 public: 46 public:
47 RequestMessageBuilder(uint32_t name, size_t payload_size) 47 RequestMessageBuilder(uint32_t name, size_t payload_size)
48 : MessageWithRequestIDBuilder(name, 48 : MessageWithRequestIDBuilder(name,
49 payload_size, 49 payload_size,
50 kMessageExpectsResponse, 50 internal::kMessageExpectsResponse,
51 0) {} 51 0) {}
52 }; 52 };
53 53
54 class ResponseMessageBuilder : public MessageWithRequestIDBuilder { 54 class ResponseMessageBuilder : public MessageWithRequestIDBuilder {
55 public: 55 public:
56 ResponseMessageBuilder(uint32_t name, 56 ResponseMessageBuilder(uint32_t name,
57 size_t payload_size, 57 size_t payload_size,
58 uint64_t request_id) 58 uint64_t request_id)
59 : MessageWithRequestIDBuilder(name, 59 : MessageWithRequestIDBuilder(name,
60 payload_size, 60 payload_size,
61 kMessageIsResponse, 61 internal::kMessageIsResponse,
62 request_id) {} 62 request_id) {}
63 }; 63 };
64 64
65 } // namespace internal
66 } // namespace mojo 65 } // namespace mojo
67 66
68 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_BUILDER_H_ 67 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_BUILDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698