ClientWrap::ClientWrap( int compileGuarded ) : m_mutex("Node.js ClientWrap") { std::vector<std::string> pluginPaths; Plug::AppendUserPaths( pluginPaths ); Plug::AppendGlobalPaths( pluginPaths ); CG::CompileOptions compileOptions; if ( compileGuarded > -1 ) compileOptions.setGuarded( compileGuarded ); else compileOptions.setGuarded( false ); RC::Handle<IO::Manager> ioManager = IOManager::Create( &ClientWrap::ScheduleAsyncUserCallback, this ); RC::Handle<DG::Context> dgContext = DG::Context::Create( ioManager, pluginPaths, compileOptions, true ); #if defined(FABRIC_MODULE_OPENCL) OCL::registerTypes( dgContext->getRTManager() ); #endif Plug::Manager::Instance()->loadBuiltInPlugins( pluginPaths, dgContext->getCGManager(), DG::Context::GetCallbackStruct() ); m_client = Client::Create( dgContext, this ); m_mainThreadTLS = true; uv_async_init( uv_default_loop(), &m_uvAsync, &ClientWrap::AsyncCallback ); m_uvAsync.data = this; //// uv_timer_init adds a loop reference. (That is, it calls uv_ref.) This //// is not the behavior we want in Node. Timers should not increase the //// ref count of the loop except when active. //uv_unref( uv_default_loop() ); }
ResourceLoadNode::ResourceLoadNode( std::string const &name, RC::Handle<Context> const &context ) : Node( name, context ) , m_fabricResourceStreamData( context->getRTManager() ) , m_firstEvalAfterLoad( false ) , m_keepMemoryCache( false ) , m_asFile( false ) , m_inProgress( false ) , m_streamGeneration( 0 ) , m_resourceManagerWeak( context->getIOManager()->getResourceManager() ) { RC::ConstHandle<RT::StringDesc> stringDesc = context->getRTManager()->getStringDesc(); RC::ConstHandle<RT::BooleanDesc> booleanDesc = context->getRTManager()->getBooleanDesc(); addMember( "url", stringDesc, stringDesc->getDefaultData() ); addMember( "resource", m_fabricResourceStreamData.getDesc(), m_fabricResourceStreamData.getDesc()->getDefaultData() ); addMember( "keepMemoryCache", booleanDesc, booleanDesc->getDefaultData() ); addMember( "storeDataAsFile", booleanDesc, booleanDesc->getDefaultData() ); }