示例#1
0
bool TRI_ExecuteRubyFile (mrb_state* mrb, char const* filename) {
  bool ok;
  char* content;
  mrb_value result;

  content = TRI_SlurpFile(TRI_UNKNOWN_MEM_ZONE, filename, NULL);

  if (content == 0) {
    LOG_TRACE("cannot loaded ruby file '%s': %s", filename, TRI_last_error());
    return false;
  }

  ok = TRI_ExecuteRubyString(mrb, content, filename, false, &result);

  TRI_FreeString(TRI_UNKNOWN_MEM_ZONE, content);

  return ok;
}
示例#2
0
std::shared_ptr<VPackBuilder> VelocyPackHelper::velocyPackFromFile(
    std::string const& path) {
  size_t length;
  char* content = TRI_SlurpFile(TRI_UNKNOWN_MEM_ZONE, path.c_str(), &length);
  if (content != nullptr) {
    // The Parser might THROW
    std::shared_ptr<VPackBuilder> b;
    try {
      auto b = VPackParser::fromJson(reinterpret_cast<uint8_t const*>(content),
                                     length);
      TRI_Free(TRI_UNKNOWN_MEM_ZONE, content);
      return b;
    } catch (...) {
      TRI_Free(TRI_UNKNOWN_MEM_ZONE, content);
      throw;
    }
  }
  THROW_ARANGO_EXCEPTION(TRI_ERROR_OUT_OF_MEMORY);
}