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

Side by Side Diff: mojo/system/transport_data.h

Issue 262093003: Mojo: Add/use |typedef std::vector<scoped_refptr<Dispatcher> > DispatcherVector. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « mojo/system/remote_message_pipe_unittest.cc ('k') | mojo/system/transport_data.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_SYSTEM_TRANSPORT_DATA_H_ 5 #ifndef MOJO_SYSTEM_TRANSPORT_DATA_H_
6 #define MOJO_SYSTEM_TRANSPORT_DATA_H_ 6 #define MOJO_SYSTEM_TRANSPORT_DATA_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <vector> 10 #include <vector>
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 class MOJO_SYSTEM_IMPL_EXPORT TransportData { 72 class MOJO_SYSTEM_IMPL_EXPORT TransportData {
73 public: 73 public:
74 // The maximum size of a single serialized dispatcher. This must be a multiple 74 // The maximum size of a single serialized dispatcher. This must be a multiple
75 // of |kMessageAlignment|. 75 // of |kMessageAlignment|.
76 static const size_t kMaxSerializedDispatcherSize = 10000; 76 static const size_t kMaxSerializedDispatcherSize = 10000;
77 77
78 // The maximum number of platform handles to attach for a single serialized 78 // The maximum number of platform handles to attach for a single serialized
79 // dispatcher. 79 // dispatcher.
80 static const size_t kMaxSerializedDispatcherPlatformHandles = 2; 80 static const size_t kMaxSerializedDispatcherPlatformHandles = 2;
81 81
82 TransportData( 82 TransportData(scoped_ptr<DispatcherVector> dispatchers, Channel* channel);
83 scoped_ptr<std::vector<scoped_refptr<Dispatcher> > > dispatchers,
84 Channel* channel);
85 ~TransportData(); 83 ~TransportData();
86 84
87 const void* buffer() const { return buffer_.get(); } 85 const void* buffer() const { return buffer_.get(); }
88 size_t buffer_size() const { return buffer_size_; } 86 size_t buffer_size() const { return buffer_size_; }
89 87
90 // Gets attached platform-specific handles; this may return null if there are 88 // Gets attached platform-specific handles; this may return null if there are
91 // none. Note that the caller may mutate the set of platform-specific handles. 89 // none. Note that the caller may mutate the set of platform-specific handles.
92 std::vector<embedder::PlatformHandle>* platform_handles() { 90 std::vector<embedder::PlatformHandle>* platform_handles() {
93 return platform_handles_.get(); 91 return platform_handles_.get();
94 } 92 }
(...skipping 10 matching lines...) Expand all
105 // nonzero.) Returns null if valid, and a pointer to a human-readable error 103 // nonzero.) Returns null if valid, and a pointer to a human-readable error
106 // message (for debug/logging purposes) on error. Note: This checks the 104 // message (for debug/logging purposes) on error. Note: This checks the
107 // validity of the handle table entries (i.e., does range checking), but does 105 // validity of the handle table entries (i.e., does range checking), but does
108 // not check that the validity of the actual serialized dispatcher 106 // not check that the validity of the actual serialized dispatcher
109 // information. 107 // information.
110 static const char* ValidateBuffer(const void* buffer, size_t buffer_size); 108 static const char* ValidateBuffer(const void* buffer, size_t buffer_size);
111 109
112 // Deserializes dispatchers from the given (serialized) transport data buffer 110 // Deserializes dispatchers from the given (serialized) transport data buffer
113 // (typically from a |MessageInTransit::View|). |buffer| should be non-null 111 // (typically from a |MessageInTransit::View|). |buffer| should be non-null
114 // and |buffer_size| should be nonzero. 112 // and |buffer_size| should be nonzero.
115 static scoped_ptr<std::vector<scoped_refptr<Dispatcher> > > 113 static scoped_ptr<DispatcherVector> DeserializeDispatchersFromBuffer(
116 DeserializeDispatchersFromBuffer(const void* buffer, 114 const void* buffer,
117 size_t buffer_size, 115 size_t buffer_size,
118 Channel* channel); 116 Channel* channel);
119 117
120 private: 118 private:
121 // To allow us to make compile-assertions about |Header|, etc. in the .cc 119 // To allow us to make compile-assertions about |Header|, etc. in the .cc
122 // file. 120 // file.
123 struct PrivateStructForCompileAsserts; 121 struct PrivateStructForCompileAsserts;
124 122
125 // Header for the "secondary buffer"/"transport data". Must be a multiple of 123 // Header for the "secondary buffer"/"transport data". Must be a multiple of
126 // |MessageInTransit::kMessageAlignment| in size. Must be POD. 124 // |MessageInTransit::kMessageAlignment| in size. Must be POD.
127 struct Header { 125 struct Header {
128 uint32_t num_handles; 126 uint32_t num_handles;
(...skipping 25 matching lines...) Expand all
154 // TODO(vtl): With C++11, change it to a vector of |ScopedPlatformHandles|. 152 // TODO(vtl): With C++11, change it to a vector of |ScopedPlatformHandles|.
155 scoped_ptr<std::vector<embedder::PlatformHandle> > platform_handles_; 153 scoped_ptr<std::vector<embedder::PlatformHandle> > platform_handles_;
156 154
157 DISALLOW_COPY_AND_ASSIGN(TransportData); 155 DISALLOW_COPY_AND_ASSIGN(TransportData);
158 }; 156 };
159 157
160 } // namespace system 158 } // namespace system
161 } // namespace mojo 159 } // namespace mojo
162 160
163 #endif // MOJO_SYSTEM_TRANSPORT_DATA_H_ 161 #endif // MOJO_SYSTEM_TRANSPORT_DATA_H_
OLDNEW
« no previous file with comments | « mojo/system/remote_message_pipe_unittest.cc ('k') | mojo/system/transport_data.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698