[MOD/WIP] Externalise and add errors to commands

Still need forms...
This commit is contained in:
LDA 2024-07-13 22:34:51 +02:00
commit a880769c48
9 changed files with 311 additions and 89 deletions

View file

@ -32,6 +32,8 @@ struct XMPPCommandManager {
HashMap *commands;
HashMap *sessions;
void *cookie;
};
static void
XMPPDestroySession(XMPPSession *session)
@ -99,13 +101,14 @@ XMPPRegisterSession(XMPPCommandManager *m, char *p_jid, char *s_jid, char *node)
XMPPCommandManager *
XMPPCreateManager(void)
XMPPCreateManager(void *cookie)
{
XMPPCommandManager *ret = Malloc(sizeof(*ret));
pthread_mutex_init(&ret->lock, NULL);
ret->commands = HashMapCreate();
ret->sessions = HashMapCreate();
ret->cookie = cookie;
return ret;
}
@ -237,7 +240,7 @@ XMPPManageCommand(XMPPCommandManager *m, XMLElement *stanza, ParseeData *data)
XMLAddAttr(command_xml, "node", node);
XMLAddAttr(command_xml, "status", "completed");
XMLAddAttr(command_xml, "sessionid", session_id);
XMPPExecuteCommand(m, cmd, command_xml, NULL);
XMPPExecuteCommand(m, cmd, from, command_xml, NULL);
XMLAddChild(iq, command_xml);
pthread_mutex_lock(&jabber->write_lock);
@ -258,3 +261,8 @@ end:
pthread_mutex_unlock(&m->lock);
return good;
}
void *
XMPPGetManagerCookie(XMPPCommandManager *manager)
{
return manager ? manager->cookie : NULL;
}