SCACore.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. #pragma once
  6. namespace Js
  7. {
  8. namespace SCACore
  9. {
  10. class Serializer
  11. {
  12. public:
  13. Serializer(ScriptContext *scriptContext, HostStream *stream)
  14. : m_streamWriter(scriptContext, stream)
  15. {
  16. }
  17. HRESULT SetTransferableVars(Var *vars, size_t count);
  18. void WriteRawBytes(const void* source, size_t length);
  19. bool WriteValue(Var rootObject);
  20. bool DetachArrayBuffer();
  21. bool Release(byte** data, size_t *dataLength);
  22. private:
  23. StreamWriter m_streamWriter;
  24. Var* m_transferableVars = nullptr;
  25. size_t m_cTransferableVars = 0;
  26. };
  27. class Deserializer
  28. {
  29. public:
  30. Deserializer(void *data, size_t length, ScriptContext *scriptContext, HostReadStream *stream)
  31. : m_streamReader(scriptContext, (byte*)data, length, stream)
  32. {
  33. }
  34. HRESULT SetTransferableVars(Var *vars, size_t count);
  35. bool ReadRawBytes(size_t length, void **data);
  36. bool ReadBytes(size_t length, void **data);
  37. Var ReadValue();
  38. private:
  39. StreamReader m_streamReader;
  40. Var* m_transferableVars = nullptr;
  41. size_t m_cTransferableVars = 0;
  42. };
  43. }
  44. }