| //------------------------------------------------------------------------------------------------------- |
| // Copyright (C) Microsoft. All rights reserved. |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. |
| //------------------------------------------------------------------------------------------------------- |
| |
| #pragma once |
| |
| namespace Js |
| { |
| namespace SCACore |
| { |
| class Serializer |
| { |
| public: |
| Serializer(ScriptContext *scriptContext, HostStream *stream) |
| : m_streamWriter(scriptContext, stream) |
| { |
| } |
| |
| HRESULT SetTransferableVars(Var *vars, size_t count); |
| |
| void WriteRawBytes(const void* source, size_t length); |
| bool WriteValue(Var rootObject); |
| bool DetachArrayBuffer(); |
| |
| bool Release(byte** data, size_t *dataLength); |
| |
| private: |
| StreamWriter m_streamWriter; |
| Var* m_transferableVars = nullptr; |
| size_t m_cTransferableVars = 0; |
| }; |
| |
| class Deserializer |
| { |
| public: |
| Deserializer(void *data, size_t length, ScriptContext *scriptContext, HostReadStream *stream) |
| : m_streamReader(scriptContext, (byte*)data, length, stream) |
| { |
| } |
| |
| HRESULT SetTransferableVars(Var *vars, size_t count); |
| |
| bool ReadRawBytes(size_t length, void **data); |
| bool ReadBytes(size_t length, void **data); |
| Var ReadValue(); |
| |
| private: |
| StreamReader m_streamReader; |
| Var* m_transferableVars = nullptr; |
| size_t m_cTransferableVars = 0; |
| }; |
| } |
| |
| } |
| |