diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/Platform/IPC/DataReference.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebKit2/Platform/IPC/DataReference.cpp')
-rw-r--r-- | Source/WebKit2/Platform/IPC/DataReference.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/Source/WebKit2/Platform/IPC/DataReference.cpp b/Source/WebKit2/Platform/IPC/DataReference.cpp index 0047022e9..9bdec4ff4 100644 --- a/Source/WebKit2/Platform/IPC/DataReference.cpp +++ b/Source/WebKit2/Platform/IPC/DataReference.cpp @@ -26,19 +26,34 @@ #include "config.h" #include "DataReference.h" -#include "ArgumentDecoder.h" -#include "ArgumentEncoder.h" +#include "Decoder.h" +#include "Encoder.h" namespace IPC { -void DataReference::encode(ArgumentEncoder& encoder) const +void DataReference::encode(Encoder& encoder) const { encoder.encodeVariableLengthByteArray(*this); } -bool DataReference::decode(ArgumentDecoder& decoder, DataReference& dataReference) +bool DataReference::decode(Decoder& decoder, DataReference& dataReference) { return decoder.decodeVariableLengthByteArray(dataReference); } +void SharedBufferDataReference::encode(Encoder& encoder) const +{ + uint64_t bufferSize = static_cast<uint64_t>(m_buffer->size()); + encoder.reserve(bufferSize + sizeof(uint64_t)); + encoder << bufferSize; + + const char* partialData; + unsigned position = 0; + while (position < bufferSize) { + unsigned bytesToWrite = m_buffer->getSomeData(partialData, position); + encoder.encodeFixedLengthData(reinterpret_cast<const uint8_t*>(partialData), bytesToWrite, 1); + position += bytesToWrite; + } +} + } // namespace IPC |