Store the target jid in the AdhocSession objects
This commit is contained in:
@@ -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
|
|||||||
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:
|
|||||||
* 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 @@
|
|||||||
|
|
||||||
#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;
|
|||||||
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:
|
|||||||
*/
|
*/
|
||||||
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:
|
|||||||
* 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.
|
||||||
|
|||||||
Reference in New Issue
Block a user