Also store a reference instead of a pointer, in AdhocCommandsHandler
This commit is contained in:
@@ -20,7 +20,7 @@ bool AdhocCommand::is_admin_only() const
|
||||
return this->admin_only;
|
||||
}
|
||||
|
||||
void PingStep1(XmppComponent*, AdhocSession&, XmlNode& command_node)
|
||||
void PingStep1(XmppComponent&, AdhocSession&, XmlNode& command_node)
|
||||
{
|
||||
XmlNode note("note");
|
||||
note["type"] = "info";
|
||||
@@ -28,7 +28,7 @@ void PingStep1(XmppComponent*, AdhocSession&, XmlNode& command_node)
|
||||
command_node.add_child(std::move(note));
|
||||
}
|
||||
|
||||
void HelloStep1(XmppComponent*, AdhocSession&, XmlNode& command_node)
|
||||
void HelloStep1(XmppComponent&, AdhocSession&, XmlNode& command_node)
|
||||
{
|
||||
XmlNode x("jabber:x:data:x");
|
||||
x["type"] = "form";
|
||||
@@ -48,11 +48,10 @@ void HelloStep1(XmppComponent*, AdhocSession&, XmlNode& command_node)
|
||||
command_node.add_child(std::move(x));
|
||||
}
|
||||
|
||||
void HelloStep2(XmppComponent*, AdhocSession& session, XmlNode& command_node)
|
||||
void HelloStep2(XmppComponent&, AdhocSession& session, XmlNode& command_node)
|
||||
{
|
||||
// Find out if the name was provided in the form.
|
||||
const XmlNode* x = command_node.get_child("x", "jabber:x:data");
|
||||
if (x)
|
||||
if (const XmlNode* x = command_node.get_child("x", "jabber:x:data"))
|
||||
{
|
||||
const XmlNode* name_field = nullptr;
|
||||
for (const XmlNode* field: x->get_children("field", "jabber:x:data"))
|
||||
@@ -63,8 +62,7 @@ void HelloStep2(XmppComponent*, AdhocSession& session, XmlNode& command_node)
|
||||
}
|
||||
if (name_field)
|
||||
{
|
||||
const XmlNode* value = name_field->get_child("value", "jabber:x:data");
|
||||
if (value)
|
||||
if (const XmlNode* value = name_field->get_child("value", "jabber:x:data"))
|
||||
{
|
||||
XmlNode note("note");
|
||||
note["type"] = "info";
|
||||
@@ -84,7 +82,7 @@ void HelloStep2(XmppComponent*, AdhocSession& session, XmlNode& command_node)
|
||||
session.terminate();
|
||||
}
|
||||
|
||||
void Reload(XmppComponent*, AdhocSession&, XmlNode& command_node)
|
||||
void Reload(XmppComponent&, AdhocSession&, XmlNode& command_node)
|
||||
{
|
||||
::reload_process();
|
||||
command_node.delete_all_children();
|
||||
|
||||
@@ -35,9 +35,9 @@ private:
|
||||
const bool admin_only;
|
||||
};
|
||||
|
||||
void PingStep1(XmppComponent*, AdhocSession& session, XmlNode& command_node);
|
||||
void HelloStep1(XmppComponent*, AdhocSession& session, XmlNode& command_node);
|
||||
void HelloStep2(XmppComponent*, AdhocSession& session, XmlNode& command_node);
|
||||
void Reload(XmppComponent*, AdhocSession& session, XmlNode& command_node);
|
||||
void PingStep1(XmppComponent&, AdhocSession& session, XmlNode& command_node);
|
||||
void HelloStep1(XmppComponent&, AdhocSession& session, XmlNode& command_node);
|
||||
void HelloStep2(XmppComponent&, AdhocSession& session, XmlNode& command_node);
|
||||
void Reload(XmppComponent&, AdhocSession& session, XmlNode& command_node);
|
||||
|
||||
#endif // ADHOC_COMMAND_HPP
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
class AdhocCommandsHandler
|
||||
{
|
||||
public:
|
||||
explicit AdhocCommandsHandler(XmppComponent* xmpp_component):
|
||||
explicit AdhocCommandsHandler(XmppComponent& xmpp_component):
|
||||
xmpp_component(xmpp_component),
|
||||
commands{}
|
||||
{ }
|
||||
@@ -50,10 +50,9 @@ public:
|
||||
void remove_session(const std::string& session_id, const std::string& initiator_jid);
|
||||
private:
|
||||
/**
|
||||
* A pointer to the XmppComponent, to access to basically anything in the
|
||||
* gateway.
|
||||
* To access basically anything in the gateway.
|
||||
*/
|
||||
XmppComponent* xmpp_component;
|
||||
XmppComponent& xmpp_component;
|
||||
/**
|
||||
* The list of all available commands.
|
||||
*/
|
||||
|
||||
@@ -17,7 +17,7 @@ class AdhocSession;
|
||||
* XmlNode and modifies it accordingly (inserting for example an <error/>
|
||||
* node, or a data form…).
|
||||
*/
|
||||
using AdhocStep = std::function<void(XmppComponent*, AdhocSession&, XmlNode&)>;
|
||||
using AdhocStep = std::function<void(XmppComponent&, AdhocSession&, XmlNode&)>;
|
||||
|
||||
class AdhocSession
|
||||
{
|
||||
|
||||
@@ -45,7 +45,7 @@ XmppComponent::XmppComponent(std::shared_ptr<Poller> poller, const std::string&
|
||||
doc_open(false),
|
||||
served_hostname(hostname),
|
||||
stanza_handlers{},
|
||||
adhoc_commands_handler(this)
|
||||
adhoc_commands_handler(*this)
|
||||
{
|
||||
this->parser.add_stream_open_callback(std::bind(&XmppComponent::on_remote_stream_open, this,
|
||||
std::placeholders::_1));
|
||||
|
||||
Reference in New Issue
Block a user