summaryrefslogtreecommitdiff
path: root/Source/WebKit2/Platform/IPC/DataReference.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/Platform/IPC/DataReference.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebKit2/Platform/IPC/DataReference.cpp')
-rw-r--r--Source/WebKit2/Platform/IPC/DataReference.cpp23
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