%PDF- %PDF-
Direktori : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/src/ |
Current File : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/src/inspector_io.h |
#pragma once #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #if !HAVE_INSPECTOR #error("This header can only be used when inspector is enabled") #endif #include "inspector_socket_server.h" #include "node_mutex.h" #include "uv.h" #include <cstddef> #include <memory> namespace node { // Forward declaration to break recursive dependency chain with src/env.h. class Environment; namespace inspector { class MainThreadHandle; class RequestQueue; class InspectorIo { public: // Start the inspector agent thread, waiting for it to initialize // bool Start(); // Returns empty pointer if thread was not started static std::unique_ptr<InspectorIo> Start( std::shared_ptr<MainThreadHandle> main_thread, const std::string& path, std::shared_ptr<ExclusiveAccess<HostPort>> host_port, const InspectPublishUid& inspect_publish_uid); // Will block till the transport thread shuts down ~InspectorIo(); void StopAcceptingNewConnections(); std::string GetWsUrl() const; private: InspectorIo(std::shared_ptr<MainThreadHandle> handle, const std::string& path, std::shared_ptr<ExclusiveAccess<HostPort>> host_port, const InspectPublishUid& inspect_publish_uid); // Wrapper for agent->ThreadMain() static void ThreadMain(void* agent); // Runs a uv_loop_t void ThreadMain(); // This is a thread-safe object that will post async tasks. It lives as long // as an Inspector object lives (almost as long as an Isolate). std::shared_ptr<MainThreadHandle> main_thread_; // Used to post on a frontend interface thread, lives while the server is // running std::shared_ptr<RequestQueue> request_queue_; std::shared_ptr<ExclusiveAccess<HostPort>> host_port_; InspectPublishUid inspect_publish_uid_; // The IO thread runs its own uv_loop to implement the TCP server off // the main thread. uv_thread_t thread_; // For setting up interthread communications Mutex thread_start_lock_; ConditionVariable thread_start_condition_; std::string script_name_; // May be accessed from any thread const std::string id_; }; } // namespace inspector } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS