blob: 314c4ba42da3a163f62a47fbb307b37fd5572b15 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// 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;
};
}
}