Flutter Engine
The Flutter Engine
byte_streams.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_SHELL_PLATFORM_COMMON_CLIENT_WRAPPER_INCLUDE_FLUTTER_BYTE_STREAMS_H_
6#define FLUTTER_SHELL_PLATFORM_COMMON_CLIENT_WRAPPER_INCLUDE_FLUTTER_BYTE_STREAMS_H_
7
8// Interfaces for interacting with a stream of bytes, for use in codecs.
9
10namespace flutter {
11
12// An interface for a class that reads from a byte stream.
14 public:
15 explicit ByteStreamReader() = default;
16 virtual ~ByteStreamReader() = default;
17
18 // Reads and returns the next byte from the stream.
19 virtual uint8_t ReadByte() = 0;
20
21 // Reads the next |length| bytes from the stream into |buffer|. The caller
22 // is responsible for ensuring that |buffer| is large enough.
23 virtual void ReadBytes(uint8_t* buffer, size_t length) = 0;
24
25 // Advances the read cursor to the next multiple of |alignment| relative to
26 // the start of the stream, unless it is already aligned.
27 virtual void ReadAlignment(uint8_t alignment) = 0;
28
29 // Reads and returns the next 32-bit integer from the stream.
30 int32_t ReadInt32() {
31 int32_t value = 0;
32 ReadBytes(reinterpret_cast<uint8_t*>(&value), 4);
33 return value;
34 }
35
36 // Reads and returns the next 64-bit integer from the stream.
37 int64_t ReadInt64() {
38 int64_t value = 0;
39 ReadBytes(reinterpret_cast<uint8_t*>(&value), 8);
40 return value;
41 }
42
43 // Reads and returns the next 64-bit floating point number from the stream.
44 double ReadDouble() {
45 double value = 0;
46 ReadBytes(reinterpret_cast<uint8_t*>(&value), 8);
47 return value;
48 }
49};
50
51// An interface for a class that writes to a byte stream.
53 public:
54 explicit ByteStreamWriter() = default;
55 virtual ~ByteStreamWriter() = default;
56
57 // Writes |byte| to the stream.
58 virtual void WriteByte(uint8_t byte) = 0;
59
60 // Writes the next |length| bytes from |bytes| to the stream
61 virtual void WriteBytes(const uint8_t* bytes, size_t length) = 0;
62
63 // Writes 0s until the next multiple of |alignment| relative to the start
64 // of the stream, unless the write positition is already aligned.
65 virtual void WriteAlignment(uint8_t alignment) = 0;
66
67 // Writes the given 32-bit int to the stream.
68 void WriteInt32(int32_t value) {
69 WriteBytes(reinterpret_cast<const uint8_t*>(&value), 4);
70 }
71
72 // Writes the given 64-bit int to the stream.
73 void WriteInt64(int64_t value) {
74 WriteBytes(reinterpret_cast<const uint8_t*>(&value), 8);
75 }
76
77 // Writes the given 36-bit double to the stream.
78 void WriteDouble(double value) {
79 WriteBytes(reinterpret_cast<const uint8_t*>(&value), 8);
80 }
81};
82
83} // namespace flutter
84
85#endif // FLUTTER_SHELL_PLATFORM_COMMON_CLIENT_WRAPPER_INCLUDE_FLUTTER_BYTE_STREAMS_H_
virtual uint8_t ReadByte()=0
virtual void ReadBytes(uint8_t *buffer, size_t length)=0
virtual void ReadAlignment(uint8_t alignment)=0
virtual ~ByteStreamReader()=default
virtual void WriteByte(uint8_t byte)=0
void WriteInt64(int64_t value)
Definition: byte_streams.h:73
virtual void WriteBytes(const uint8_t *bytes, size_t length)=0
virtual void WriteAlignment(uint8_t alignment)=0
void WriteDouble(double value)
Definition: byte_streams.h:78
void WriteInt32(int32_t value)
Definition: byte_streams.h:68
virtual ~ByteStreamWriter()=default
uint8_t value
size_t length
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir Path to the cache directory This is different from the persistent_cache_path in embedder which is used for Skia shader cache icu native lib Path to the library file that exports the ICU data vm service The hostname IP address on which the Dart VM Service should be served If not defaults to or::depending on whether ipv6 is specified vm service A custom Dart VM Service port The default is to pick a randomly available open port disable vm Disable the Dart VM Service The Dart VM Service is never available in release mode disable vm service Disable mDNS Dart VM Service publication Bind to the IPv6 localhost address for the Dart VM Service Ignored if vm service host is set endless trace buffer
Definition: switches.h:126