Example #1
0
    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() );
    }