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

Side by Side Diff: mojo/public/cpp/bindings/message.h

Issue 2207763003: Make mojo::internal::Buffer a non-virtual class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@85_3_inline_validation_context
Patch Set: Created 4 years, 4 months 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 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 #ifndef MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_ 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 26 matching lines...) Expand all
37 void Initialize(size_t capacity, bool zero_initialized); 37 void Initialize(size_t capacity, bool zero_initialized);
38 38
39 // Initializes a Message from an existing Mojo MessageHandle. 39 // Initializes a Message from an existing Mojo MessageHandle.
40 void InitializeFromMojoMessage(ScopedMessageHandle message, 40 void InitializeFromMojoMessage(ScopedMessageHandle message,
41 uint32_t num_bytes, 41 uint32_t num_bytes,
42 std::vector<Handle>* handles); 42 std::vector<Handle>* handles);
43 43
44 // Transfers data and handles to |destination|. 44 // Transfers data and handles to |destination|.
45 void MoveTo(Message* destination); 45 void MoveTo(Message* destination);
46 46
47 uint32_t data_num_bytes() const { return buffer_->data_num_bytes(); } 47 uint32_t data_num_bytes() const {
48 return static_cast<uint32_t>(buffer_->size());
49 }
48 50
49 // Access the raw bytes of the message. 51 // Access the raw bytes of the message.
50 const uint8_t* data() const { 52 const uint8_t* data() const {
51 return static_cast<const uint8_t*>(buffer_->data()); 53 return static_cast<const uint8_t*>(buffer_->data());
52 } 54 }
53 55
54 uint8_t* mutable_data() { return static_cast<uint8_t*>(buffer_->data()); } 56 uint8_t* mutable_data() { return static_cast<uint8_t*>(buffer_->data()); }
55 57
56 // Access the header. 58 // Access the header.
57 const internal::MessageHeader* header() const { 59 const internal::MessageHeader* header() const {
(...skipping 21 matching lines...) Expand all
79 void set_request_id(uint64_t request_id) { 81 void set_request_id(uint64_t request_id) {
80 DCHECK(has_request_id()); 82 DCHECK(has_request_id());
81 static_cast<internal::MessageHeaderWithRequestID*>(header()) 83 static_cast<internal::MessageHeaderWithRequestID*>(header())
82 ->request_id = request_id; 84 ->request_id = request_id;
83 } 85 }
84 86
85 // Access the payload. 87 // Access the payload.
86 const uint8_t* payload() const { return data() + header()->num_bytes; } 88 const uint8_t* payload() const { return data() + header()->num_bytes; }
87 uint8_t* mutable_payload() { return const_cast<uint8_t*>(payload()); } 89 uint8_t* mutable_payload() { return const_cast<uint8_t*>(payload()); }
88 uint32_t payload_num_bytes() const { 90 uint32_t payload_num_bytes() const {
89 DCHECK(buffer_->data_num_bytes() >= header()->num_bytes); 91 DCHECK(data_num_bytes() >= header()->num_bytes);
90 size_t num_bytes = buffer_->data_num_bytes() - header()->num_bytes; 92 size_t num_bytes = data_num_bytes() - header()->num_bytes;
91 DCHECK(num_bytes <= std::numeric_limits<uint32_t>::max()); 93 DCHECK(num_bytes <= std::numeric_limits<uint32_t>::max());
92 return static_cast<uint32_t>(num_bytes); 94 return static_cast<uint32_t>(num_bytes);
93 } 95 }
94 96
95 // Access the handles. 97 // Access the handles.
96 const std::vector<Handle>* handles() const { return &handles_; } 98 const std::vector<Handle>* handles() const { return &handles_; }
97 std::vector<Handle>* mutable_handles() { return &handles_; } 99 std::vector<Handle>* mutable_handles() { return &handles_; }
98 100
99 // Access the underlying Buffer interface. 101 // Access the underlying Buffer interface.
100 internal::Buffer* buffer() { return buffer_.get(); } 102 internal::Buffer* buffer() { return buffer_.get(); }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 // the caller should wait on the handle to become readable. Returns 193 // the caller should wait on the handle to become readable. Returns
192 // MOJO_RESULT_OK if the message was read successfully and should be 194 // MOJO_RESULT_OK if the message was read successfully and should be
193 // dispatched, otherwise returns an error code if something went wrong. 195 // dispatched, otherwise returns an error code if something went wrong.
194 // 196 //
195 // NOTE: The message hasn't been validated and may be malformed! 197 // NOTE: The message hasn't been validated and may be malformed!
196 MojoResult ReadMessage(MessagePipeHandle handle, Message* message); 198 MojoResult ReadMessage(MessagePipeHandle handle, Message* message);
197 199
198 } // namespace mojo 200 } // namespace mojo
199 201
200 #endif // MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_ 202 #endif // MOJO_PUBLIC_CPP_BINDINGS_MESSAGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698