#pragma once #include #include #include #include namespace mbgl { namespace util { template class AsyncQueue; } } namespace node_mbgl { class NodeFileSource : public node::ObjectWrap, public mbgl::FileSource { //////////////////////////////////////////////////////////////////////////////////////////////// // Static Node Methods public: static void Init(v8::Handle target); static NAN_METHOD(New); static v8::Persistent constructorTemplate; //////////////////////////////////////////////////////////////////////////////////////////////// // Instance public: NodeFileSource(); ~NodeFileSource(); mbgl::Request *request(const mbgl::Resource &resource, uv_loop_t *loop, Callback callback); void request(const mbgl::Resource &resource, Callback callback); void cancel(mbgl::Request *request); // visiblity? void notify(mbgl::Request *request, const std::shared_ptr &response); private: struct Action; using Queue = mbgl::util::AsyncQueue; void processAdd(mbgl::Request *request); void processCancel(mbgl::Request *request); private: std::map> pending; Queue *queue = nullptr; }; }