diff options
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 |