Also store a reference instead of a pointer, in AdhocCommandsHandler

This commit is contained in:
Florent Le Coz
2015-12-23 11:05:54 +01:00
parent 7e2427148e
commit 9714d02018
8 changed files with 40 additions and 43 deletions
+6 -8
View File
@@ -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();
+4 -4
View File
@@ -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
+3 -4
View File
@@ -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.
*/
+1 -1
View File
@@ -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
{
+1 -1
View File
@@ -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));