#ifndef INCLUDED_Serialize #define INCLUDED_Serialize #include #include class Task; class TaskStub; class Serialize { public: static bool store(Task* task, std::vector& buffer, v8::Handle value); static v8::Handle load(Task* task, TaskStub* from, const std::vector& buffer); static v8::Handle store(Task* task, v8::TryCatch& tryCatch); static v8::Handle storeMessage(Task* task, v8::Handle message); private: static bool storeInternal(Task* task, std::vector& buffer, v8::Handle value, int depth); static v8::Handle loadInternal(Task* task, TaskStub* from, const std::vector& buffer, int& offse, int deptht); static void writeInt8(std::vector& buffer, int8_t value); static void writeInt32(std::vector& buffer, int32_t value); static void writeUint32(std::vector& buffer, uint32_t value); static void writeDouble(std::vector& buffer, double value); static int8_t readInt8(const std::vector& buffer, int& offset); static int32_t readInt32(const std::vector& buffer, int& offset); static uint32_t readUint32(const std::vector& buffer, int& offset); static double readDouble(const std::vector& buffer, int& offset); enum Types { kUndefined, kNull, kBoolean, kInt32, kUint32, kNumber, kString, kArray, kObject, kFunction, kError, }; }; #endif