Index: mojo/public/dart/src/struct.dart |
diff --git a/mojo/public/dart/src/struct.dart b/mojo/public/dart/src/struct.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0111732439562dbbc1e4c45035bb9987a00ec705 |
--- /dev/null |
+++ b/mojo/public/dart/src/struct.dart |
@@ -0,0 +1,38 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+part of bindings; |
+ |
+class DataHeader { |
+ static const int kHeaderSize = 8; |
+ static const int kSizeOffset = 0; |
+ static const int kNumFieldsOffset = 4; |
+ final int size; |
+ final int numFields; |
+ |
+ const DataHeader(this.size, this.numFields); |
+ |
+ String toString() => "DataHeader($size, $numFields)"; |
+} |
+ |
+abstract class Struct { |
+ final int encodedSize; |
+ |
+ Struct(this.encodedSize); |
+ |
+ void encode(Encoder encoder); |
+ |
+ Message serialize() { |
+ var encoder = new Encoder(encodedSize); |
+ encode(encoder); |
+ return encoder.message; |
+ } |
+ |
+ ServiceMessage serializeWithHeader(MessageHeader header) { |
+ var encoder = new Encoder(encodedSize + header.size); |
+ header.encode(encoder); |
+ encode(encoder); |
+ return new ServiceMessage(encoder.message, header); |
+ } |
+} |