Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
louiz’
biboumi
Commits
c2311b28
Commit
c2311b28
authored
May 30, 2014
by
louiz’
Browse files
Send (every 240s) a PING command to all connected irc servers
fix
#2452
parent
5c9d2c23
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/bridge/bridge.cpp
View file @
c2311b28
...
...
@@ -63,6 +63,11 @@ void Bridge::clean()
}
}
const
std
::
string
&
Bridge
::
get_jid
()
const
{
return
this
->
user_jid
;
}
Xmpp
::
body
Bridge
::
make_xmpp_body
(
const
std
::
string
&
str
)
{
std
::
string
res
;
...
...
src/bridge/bridge.hpp
View file @
c2311b28
...
...
@@ -32,6 +32,10 @@ public:
* Remove all inactive IrcClients
*/
void
clean
();
/**
* Return the jid of the XMPP user using this bridge
*/
const
std
::
string
&
get_jid
()
const
;
static
Xmpp
::
body
make_xmpp_body
(
const
std
::
string
&
str
);
/***
...
...
src/irc/irc_client.cpp
View file @
c2311b28
#include
<utils/timed_events.hpp>
#include
<irc/irc_message.hpp>
#include
<irc/irc_client.hpp>
#include
<bridge/bridge.hpp>
...
...
@@ -10,8 +11,11 @@
#include
<iostream>
#include
<stdexcept>
#include
<chrono>
#include
<string>
using
namespace
std
::
string_literals
;
using
namespace
std
::
chrono_literals
;
IrcClient
::
IrcClient
(
std
::
shared_ptr
<
Poller
>
poller
,
const
std
::
string
&
hostname
,
const
std
::
string
&
username
,
Bridge
*
bridge
)
:
SocketHandler
(
poller
),
...
...
@@ -35,6 +39,9 @@ IrcClient::IrcClient(std::shared_ptr<Poller> poller, const std::string& hostname
IrcClient
::~
IrcClient
()
{
// This event may or may not exist (if we never got connected, it
// doesn't), but it's ok
TimedEventsManager
::
instance
().
cancel
(
"PING"
s
+
this
->
hostname
+
this
->
bridge
->
get_jid
());
}
void
IrcClient
::
start
()
...
...
@@ -238,6 +245,11 @@ void IrcClient::send_pong_command(const IrcMessage& message)
this
->
send_message
(
IrcMessage
(
"PONG"
,
{
id
}));
}
void
IrcClient
::
send_ping_command
()
{
this
->
send_message
(
IrcMessage
(
"PING"
,
{
"biboumi"
}));
}
void
IrcClient
::
forward_server_message
(
const
IrcMessage
&
message
)
{
const
std
::
string
from
=
message
.
prefix
;
...
...
@@ -447,6 +459,9 @@ void IrcClient::on_welcome_message(const IrcMessage& message)
{
this
->
current_nick
=
message
.
arguments
[
0
];
this
->
welcomed
=
true
;
// Install a repeated events to regularly send a PING
TimedEventsManager
::
instance
().
add_event
(
TimedEvent
(
240s
,
std
::
bind
(
&
IrcClient
::
send_ping_command
,
this
),
"PING"
s
+
this
->
hostname
+
this
->
bridge
->
get_jid
()));
for
(
const
std
::
string
&
chan_name
:
this
->
channels_to_join
)
this
->
send_join_command
(
chan_name
);
this
->
channels_to_join
.
clear
();
...
...
src/irc/irc_client.hpp
View file @
c2311b28
...
...
@@ -70,6 +70,7 @@ public:
* Send the PONG irc command
*/
void
send_pong_command
(
const
IrcMessage
&
message
);
void
send_ping_command
();
/**
* Send the USER irc command
*/
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment