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

@@ -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);