Commit 19666d2f authored by louiz’'s avatar louiz’

Store the target jid in the AdhocSession objects

parent 88ae2599
...@@ -20,7 +20,7 @@ std::map<const std::string, const AdhocCommand>& AdhocCommandsHandler::get_comma ...@@ -20,7 +20,7 @@ std::map<const std::string, const AdhocCommand>& AdhocCommandsHandler::get_comma
return this->commands; return this->commands;
} }
XmlNode AdhocCommandsHandler::handle_request(const std::string& executor_jid, XmlNode command_node) XmlNode AdhocCommandsHandler::handle_request(const std::string& executor_jid, const std::string& to, XmlNode command_node)
{ {
std::string action = command_node.get_tag("action"); std::string action = command_node.get_tag("action");
if (action.empty()) if (action.empty())
...@@ -57,7 +57,7 @@ XmlNode AdhocCommandsHandler::handle_request(const std::string& executor_jid, Xm ...@@ -57,7 +57,7 @@ XmlNode AdhocCommandsHandler::handle_request(const std::string& executor_jid, Xm
command_node["sessionid"] = sessionid; command_node["sessionid"] = sessionid;
this->sessions.emplace(std::piecewise_construct, this->sessions.emplace(std::piecewise_construct,
std::forward_as_tuple(sessionid, executor_jid), std::forward_as_tuple(sessionid, executor_jid),
std::forward_as_tuple(command_it->second, executor_jid)); std::forward_as_tuple(command_it->second, executor_jid, to));
TimedEventsManager::instance().add_event(TimedEvent(std::chrono::steady_clock::now() + 3600s, TimedEventsManager::instance().add_event(TimedEvent(std::chrono::steady_clock::now() + 3600s,
std::bind(&AdhocCommandsHandler::remove_session, this, sessionid, executor_jid), std::bind(&AdhocCommandsHandler::remove_session, this, sessionid, executor_jid),
"adhocsession"s + sessionid + executor_jid)); "adhocsession"s + sessionid + executor_jid));
......
...@@ -41,7 +41,7 @@ public: ...@@ -41,7 +41,7 @@ public:
* Takes a copy of the <command/> node so we can actually edit it and use * Takes a copy of the <command/> node so we can actually edit it and use
* it as our return value. * it as our return value.
*/ */
XmlNode handle_request(const std::string& executor_jid, XmlNode command_node); XmlNode handle_request(const std::string& executor_jid, const std::string& to, XmlNode command_node);
/** /**
* Remove the session from the list. This is done to avoid filling the * Remove the session from the list. This is done to avoid filling the
* memory with waiting session (for example due to a client that starts * memory with waiting session (for example due to a client that starts
......
...@@ -3,9 +3,11 @@ ...@@ -3,9 +3,11 @@
#include <assert.h> #include <assert.h>
AdhocSession::AdhocSession(const AdhocCommand& command, const std::string& jid): AdhocSession::AdhocSession(const AdhocCommand& command, const std::string& owner_jid,
const std::string& to_jid):
command(command), command(command),
owner_jid(jid), owner_jid(owner_jid),
to_jid(to_jid),
current_step(0), current_step(0),
terminated(false) terminated(false)
{ {
......
...@@ -23,7 +23,8 @@ typedef std::function<void(XmppComponent*, AdhocSession&, XmlNode&)> AdhocStep; ...@@ -23,7 +23,8 @@ typedef std::function<void(XmppComponent*, AdhocSession&, XmlNode&)> AdhocStep;
class AdhocSession class AdhocSession
{ {
public: public:
explicit AdhocSession(const AdhocCommand& command, const std::string& jid); explicit AdhocSession(const AdhocCommand& command, const std::string& owner_jid,
const std::string& to_jid);
~AdhocSession(); ~AdhocSession();
/** /**
* Return the function to be executed, found in our AdhocCommand, for the * Return the function to be executed, found in our AdhocCommand, for the
...@@ -41,6 +42,15 @@ public: ...@@ -41,6 +42,15 @@ public:
*/ */
void terminate(); void terminate();
bool is_terminated() const; bool is_terminated() const;
std::string get_target_jid() const
{
return this->to_jid;
}
std::string get_owner_jid() const
{
return this->owner_jid;
}
private: private:
/** /**
...@@ -54,6 +64,10 @@ private: ...@@ -54,6 +64,10 @@ private:
* this session. * this session.
*/ */
const std::string& owner_jid; const std::string& owner_jid;
/**
* The 'to' attribute in the request stanza. This is the target of the current session.
*/
const std::string& to_jid;
/** /**
* The current step we are at. It starts at zero. It is used to index the * The current step we are at. It starts at zero. It is used to index the
* associated AdhocCommand::callbacks vector. * associated AdhocCommand::callbacks vector.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment