Example #1
0
int main(int /*argc*/, char* /*argv*/ [])
{
  rtLogSetLevel(RT_LOG_INFO);

  rtError e;
  rtRemoteEnvironment* env = rtEnvironmentGetGlobal();
  e = rtRemoteInit(env);
  if (e != RT_OK)
  {
    rtLogError("rtRemoteInit:%s", rtStrError(e));
    exit(1);
  }

  rtObjectRef obj(new ContinuousVideoRecorder());
  e = rtRemoteRegisterObject(env, "some_name", obj);
  if (e != RT_OK)
  {
    rtLogError("rtRemoteRegisterObject:%s", rtStrError(e));
    exit(2);
  }

  while (true)
  {
    // process incoming messages
    e = rtRemoteRunUntil(env, 1000);
    rtLogInfo("rtRemoteRunUntil: %s", rtStrError(e));

    // ((ContinuousVideoRecorder *)obj.getPtr())->fireOnUploadComplete();
  }

  return 0;
}
rtError
rtRemoteEndpointHandleStreamServer::open()
{
  if (m_addr == nullptr)
  {
    rtLogError("failed to open endpoint socket: endpoint address is null");
    return RT_FAIL;
  }
  rtError e = rtRemoteEndpointAddressToSocket(m_addr, m_socket);
  if (e != RT_OK)
  {
    rtLogError("failed to convert from endpoint address to sockaddr");
    return e;
  }
  
  // open socket
  m_fd = socket(m_socket.ss_family, SOCK_STREAM, 0);
  if (m_fd < 0)
  {
    rtError e = rtErrorFromErrno(errno);
    rtLogError("failed to create socket. %s", rtStrError(e));
    return e;
  }

  return RT_OK;
}
rtError
rtRemoteEndpointHandleStreamServer::doListen()
{
  int ret;
  ret = listen(m_fd, 2);
  if (ret < 0)
  {
    rtError e = rtErrorFromErrno(errno);
    rtLogError("failed to put socket in listen mode. %s", rtStrError(e));
    return e;
  }
  return RT_OK;
}
Example #4
0
rtError rtDukContext::runScript(const char* script, rtValue* retVal /*= NULL*/, const char *args /*= NULL*/)
{
  if(script == NULL)
  {
    rtLogError(" %s  ... no script given.",__PRETTY_FUNCTION__);

    return RT_FAIL;
  }

  // rtLogDebug(" %s  ... Running...",__PRETTY_FUNCTION__);

  return runScript(std::string(script), retVal, args);
}
Example #5
0
rtError rtDukContext::runFile(const char *file, rtValue* retVal /*= NULL*/, const char* args /*= NULL*/)
{
  if(file == NULL)
  {
    rtLogError(" %s  ... no script given.",__PRETTY_FUNCTION__);

    return RT_FAIL;
  }

  // Read the script file
  js_file   = file;
  js_script = readFile(file);

  if( js_script.empty() ) // load error
  {
    rtLogError(" %s  ... load error / not found.",__PRETTY_FUNCTION__);

    return RT_FAIL;
  }

  return runScript(js_script.c_str(), retVal, args);
}
  virtual bool next(uint32_t timeoutMillis)
  {
    // reset event state
    for (poll_list::iterator i = mFds.begin(); i != mFds.end(); ++i)
    {
      i->events = POLLIN | POLLERR;
      i->revents = 0;
    }

    int n = poll(&mFds[0], static_cast<int>(mFds.size()), timeoutMillis);
    if (n < 0)
    {
      int err = errno;
      if (err == EINTR)
      {
        rtLogInfo("poll was interrupted by EINTR?");
      }
      else
      {
        rtLogError("error processing events: %s", getSystemError(err).c_str());
        return false;
      }
    }

    bool deviceListChanged = false;
    for (poll_list::iterator i = mFds.begin(); i != mFds.end(); ++i)
    {
      if (i->fd == -1)
      {
        rtLogWarn("invalid file descriptor");
        continue;
      }

      if (!(i->revents & POLLIN))
        continue;

      if (i->fd == mInotifyFd)
        deviceListChanged = processChangeNotify(*i);
      else
        processDescriptor(*i);
    }

    if (deviceListChanged)
    {
      rtLogInfo("device list change notify");
      close(false);
      init();
    }
    return true;
  }
Example #7
0
rtDukContextRef rtScriptDuk::createContext(bool ownThread)
{
  UNUSED_PARAM(ownThread);    // not implemented yet.

  rtDukContextRef ctxref;

#ifdef USE_CONTEXTIFY_CLONES
  if(mRefContext.getPtr() == NULL)
  {
    mRefContext = new rtDukContext();
    ctxref = mRefContext;

    mRefContext->dukCtx = dukCtx;
    assert(uvLoops.size() == 1);
    mRefContext->uvLoop = uvLoops[0];

    static std::string sandbox_path = rtGetRootModulePath(SANDBOX_JS);

    // Populate 'sandbox' vars in JS...
    if(fileExists(sandbox_path.c_str()))
    {
      mRefContext->runFile(sandbox_path.c_str());
    }
    else
    {
      rtLogError("## ERROR:   Could not find \"%s\" ...", sandbox_path.c_str());
    }
    // !CLF: TODO Why is ctxref being reassigned from the mRefContext already assigned?
    //ctxref = new rtNodeContext(mIsolate, mRefContext);
  }
  else
  {
    // rtLogInfo("\n createContext()  >>  CLONE CREATED !!!!!!");
    ctxref = new rtDukContext(mRefContext); // CLONE !!!
    assert(ctxref->uvLoop != NULL);
    uvLoops.push_back(mRefContext->uvLoop);
  }
#else
    ctxref = new rtDukContext(mIsolate,mPlatform);

#endif

  // TODO: Handle refs in map ... don't leak !
  // mNodeContexts[ ctxref->getContextId() ] = ctxref;  // ADD to map

  return ctxref;
}
Example #8
0
//rtError rtDukContext::runScript(const std::string &script, rtValue* retVal /*= NULL*/, const char* /* args = NULL*/)
rtError rtDukContext::runScript(const char* szscript, rtValue* retVal /*= NULL*/, const char *args /*= NULL*/)
{
  std::string script = szscript;
  rtLogInfo(__FUNCTION__);
  if(script.empty())
  {
    rtLogError(" %s  ... no script given.",__PRETTY_FUNCTION__);

    return RT_FAIL;
  }

  if (myload_code(dukCtx, script.c_str())) {
    return RT_FAIL;
  }

  return RT_OK;
}
rtError
rtRemoteEndpointHandleStreamServer::doBind()
{
  int ret;
  socklen_t len;
  rtSocketGetLength(m_socket, &len);

  ret = bind(m_fd, reinterpret_cast<struct sockaddr*>(&m_socket), len);
  if (ret < 0)
  {
    rtError e = rtErrorFromErrno(errno);
    rtLogError("failed to bind socket. %s", rtStrError(e));
    return e;
  }

  rtGetSockName(m_fd, m_socket);
  rtLogInfo("local rpc listener on: %s", rtSocketToString(m_socket).c_str());

  return RT_OK;
}
Example #10
0
void rtScriptDuk::nodePath()
{
  const char* NODE_PATH = ::getenv("NODE_PATH");

  if(NODE_PATH == NULL)
  {
    char cwd[1024] = {};

    if (getcwd(cwd, sizeof(cwd)) != NULL)
    {
#ifdef WIN32
	  _putenv_s("NODE_PATH", cwd);
#else
	  ::setenv("NODE_PATH", cwd, 1); // last arg is 'overwrite' ... 0 means DON'T !
#endif
	  rtLogInfo("NODE_PATH=%s", cwd);
    }
    else
    {
      rtLogError(" - failed to set NODE_PATH");
    }
  }
}