allow setting/getting nodes in g_configs

This commit is contained in:
Eduardo Bart 2012-02-01 21:37:40 -02:00
parent 289efe34cf
commit 98ef0e4574
6 changed files with 39 additions and 17 deletions

View File

@ -1,5 +1,13 @@
Settings = {}
Settings.exists = g_configs.exists
Settings.setNode = g_configs.setNode
Settings.mergeNode = g_configs.mergeNode
Settings.getNode = g_configs.getNode
Settings.remove = g_configs.remove
Settings.setList = g_configs.setList
Settings.getList = g_configs.getList
local function convertSettingValue(value)
if type(value) == 'table' then
if value.x and value.width then
@ -20,21 +28,10 @@ local function convertSettingValue(value)
end
end
function Settings.exists(key)
return g_configs.exists(key)
end
function Settings.remove(key)
g_configs.remove(key)
end
function Settings.set(key, value)
g_configs.set(key, convertSettingValue(value))
end
function Settings.setList(key, list)
g_configs.setList(key, list)
end
function Settings.setDefault(key, value)
if Settings.exists(key) then return false end
@ -49,10 +46,6 @@ function Settings.get(key, default)
return g_configs.get(key)
end
function Settings.getList(key)
return g_configs.getList(key)
end
function Settings.getString(key, default)
return Settings.get(key, default)
end

View File

@ -112,3 +112,21 @@ void ConfigManager::remove(const std::string& key)
if(child)
m_confsDoc->removeChild(child);
}
void ConfigManager::setNode(const std::string& key, const OTMLNodePtr& node)
{
remove(key);
addNode(key, node);
}
void ConfigManager::addNode(const std::string& key, const OTMLNodePtr& node)
{
OTMLNodePtr clone = node->clone();
node->setTag(key);
m_confsDoc->addChild(node);
}
OTMLNodePtr ConfigManager::getNode(const std::string& key)
{
return m_confsDoc->get(key);
}

View File

@ -37,6 +37,11 @@ public:
void setList(const std::string& key, const std::vector<std::string>& list);
std::string get(const std::string& key);
std::vector<std::string> getList(const std::string& key);
void setNode(const std::string& key, const OTMLNodePtr& node);
void addNode(const std::string& key, const OTMLNodePtr& node);
OTMLNodePtr getNode(const std::string& key);
bool exists(const std::string& key);
void remove(const std::string& key);

View File

@ -381,6 +381,9 @@ void Application::registerLuaFunctions()
g_lua.bindClassStaticFunction("g_configs", "getList", std::bind(&ConfigManager::getList, &g_configs, _1));
g_lua.bindClassStaticFunction("g_configs", "exists", std::bind(&ConfigManager::exists, &g_configs, _1));
g_lua.bindClassStaticFunction("g_configs", "remove", std::bind(&ConfigManager::remove, &g_configs, _1));
g_lua.bindClassStaticFunction("g_configs", "setNode", std::bind(&ConfigManager::setNode, &g_configs, _1, _2));
g_lua.bindClassStaticFunction("g_configs", "addNode", std::bind(&ConfigManager::addNode, &g_configs, _1, _2));
g_lua.bindClassStaticFunction("g_configs", "getNode", std::bind(&ConfigManager::getNode, &g_configs, _1));
// PlatformWindow
g_lua.registerStaticClass("g_window");

View File

@ -264,7 +264,7 @@ bool luavalue_cast(int index, OTMLNodePtr& node)
std::string cnodeName = g_lua.toString(-2);
if(g_lua.isTable()) {
OTMLNodePtr cnode;
if(luavalue_cast(-1, node)) {
if(luavalue_cast(-1, cnode)) {
cnode->setTag(cnodeName);
node->addChild(cnode);
}

View File

@ -108,6 +108,10 @@ void Connection::write(uint8* buffer, uint16 size)
if(!m_connected)
return;
// send old buffer if we can't add more data
if(m_sendBufferSize + size >= SEND_BUFFER_SIZE && m_sendEvent)
m_sendEvent->execute();
// we can't send right, otherwise we could create tcp congestion
memcpy(m_sendBuffer + m_sendBufferSize, buffer, size);
m_sendBufferSize += size;
@ -172,7 +176,6 @@ void Connection::onConnect(const boost::system::error_code& error)
m_connected = true;
// disable nagle's algorithm
//TODO: implement custom cache
boost::asio::ip::tcp::no_delay option(true);
m_socket.set_option(option);