extensions/lua/LuaScriptStateManager.cpp (29 lines of code) (raw):
/**
 *
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include "LuaScriptStateManager.h"
namespace org::apache::nifi::minifi::extensions::lua {
namespace {
core::StateManager::State from_lua(const sol::table& lua_state) {
  core::StateManager::State cpp_state;
  for (const auto& [lua_state_key, lua_state_value] : lua_state)
    cpp_state[lua_state_key.as<std::string>()] = lua_state_value.as<std::string>();
  return cpp_state;
}
sol::table to_lua(const core::StateManager::State& cpp_state, sol::state& sol_state) {
  auto lua_state = sol::table(sol_state.lua_state(), sol::create);
  for (const auto& [cpp_state_key, cpp_state_value] : cpp_state)
    lua_state[cpp_state_key] = cpp_state_value;
  return lua_state;
}
}  // namespace
bool LuaScriptStateManager::set(const sol::table& core_component_state_lua) {
  if (!state_manager_)
    return false;
  return state_manager_->set(from_lua(core_component_state_lua));
}
sol::optional<sol::table> LuaScriptStateManager::get() {
  if (!state_manager_)
    return sol::nullopt;
  if (auto core_component_state_cpp = state_manager_->get())
    return to_lua(*core_component_state_cpp, sol_state_);
  return sol::nullopt;
}
}  // namespace org::apache::nifi::minifi::extensions::lua