%PDF- %PDF-
Direktori : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/src/ |
Current File : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/src/node_wasi.h |
#ifndef SRC_NODE_WASI_H_ #define SRC_NODE_WASI_H_ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include "base_object.h" #include "node_mem.h" #include "uvwasi.h" #include "v8-fast-api-calls.h" namespace node { namespace wasi { struct WasmMemory { char* data; size_t size; }; class WASI : public BaseObject, public mem::NgLibMemoryManager<WASI, uvwasi_mem_t> { public: WASI(Environment* env, v8::Local<v8::Object> object, uvwasi_options_t* options); static void New(const v8::FunctionCallbackInfo<v8::Value>& args); void MemoryInfo(MemoryTracker* tracker) const override; SET_MEMORY_INFO_NAME(WASI) SET_SELF_SIZE(WASI) static uint32_t ArgsGet(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t ArgsSizesGet(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t ClockResGet(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t ClockTimeGet(WASI&, WasmMemory, uint32_t, uint64_t, uint32_t); static uint32_t EnvironGet(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t EnvironSizesGet(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t FdAdvise( WASI&, WasmMemory, uint32_t, uint64_t, uint64_t, uint32_t); static uint32_t FdAllocate(WASI&, WasmMemory, uint32_t, uint64_t, uint64_t); static uint32_t FdClose(WASI&, WasmMemory, uint32_t); static uint32_t FdDatasync(WASI&, WasmMemory, uint32_t); static uint32_t FdFdstatGet(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t FdFdstatSetFlags(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t FdFdstatSetRights( WASI&, WasmMemory, uint32_t, uint64_t, uint64_t); static uint32_t FdFilestatGet(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t FdFilestatSetSize(WASI&, WasmMemory, uint32_t, uint64_t); static uint32_t FdFilestatSetTimes( WASI&, WasmMemory, uint32_t, uint64_t, uint64_t, uint32_t); static uint32_t FdPread(WASI&, WasmMemory memory, uint32_t, uint32_t, uint32_t, uint64_t, uint32_t); static uint32_t FdPrestatGet(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t FdPrestatDirName( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t); static uint32_t FdPwrite( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint64_t, uint32_t); static uint32_t FdRead( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t); static uint32_t FdReaddir( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint64_t, uint32_t); static uint32_t FdRenumber(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t FdSeek( WASI&, WasmMemory, uint32_t, int64_t, uint32_t, uint32_t); static uint32_t FdSync(WASI&, WasmMemory, uint32_t); static uint32_t FdTell(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t FdWrite( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t); static uint32_t PathCreateDirectory( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t); static uint32_t PathFilestatGet( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); static uint32_t PathFilestatSetTimes(WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t, uint64_t, uint64_t, uint32_t); static uint32_t PathLink(WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); static uint32_t PathOpen(WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint64_t, uint64_t, uint32_t, uint32_t); static uint32_t PathReadlink(WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); static uint32_t PathRemoveDirectory( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t); static uint32_t PathRename(WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); static uint32_t PathSymlink( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); static uint32_t PathUnlinkFile( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t); static uint32_t PollOneoff( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t); static void ProcExit(WASI&, WasmMemory, uint32_t); static uint32_t ProcRaise(WASI&, WasmMemory, uint32_t); static uint32_t RandomGet(WASI&, WasmMemory, uint32_t, uint32_t); static uint32_t SchedYield(WASI&, WasmMemory); static uint32_t SockAccept(WASI&, WasmMemory, uint32_t, uint32_t, uint32_t); static uint32_t SockRecv(WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); static uint32_t SockSend( WASI&, WasmMemory, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); static uint32_t SockShutdown(WASI&, WasmMemory, uint32_t, uint32_t); static void _SetMemory(const v8::FunctionCallbackInfo<v8::Value>& args); // Implementation for mem::NgLibMemoryManager void CheckAllocatedSize(size_t previous_size) const; void IncreaseAllocatedSize(size_t size); void DecreaseAllocatedSize(size_t size); // <typename FT, FT F> as a C++14 desugaring of `<auto F>` template <typename FT, FT F, typename R, typename... Args> class WasiFunction { public: static void SetFunction(Environment*, const char*, v8::Local<v8::FunctionTemplate>); private: static R FastCallback(v8::Local<v8::Object> receiver, Args..., v8::FastApiCallbackOptions&); static void SlowCallback(const v8::FunctionCallbackInfo<v8::Value>&); }; private: ~WASI() override; uvwasi_t uvw_; v8::Global<v8::WasmMemoryObject> memory_; uvwasi_mem_t alloc_info_; size_t current_uvwasi_memory_ = 0; }; } // namespace wasi } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_NODE_WASI_H_