This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-2.21.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.21.x by this push: new 3de8d9a [IRC] Add commandTimeout parameter for IRC (#2685) 3de8d9a is described below commit 3de8d9af6d53b75cbf206d052236d8b9a399cb55 Author: Andrej Vano <av...@redhat.com> AuthorDate: Sat Dec 22 12:55:33 2018 +0100 [IRC] Add commandTimeout parameter for IRC (#2685) --- components/camel-irc/src/main/docs/irc-component.adoc | 3 ++- .../apache/camel/component/irc/IrcConfiguration.java | 16 +++++++++++++++- .../org/apache/camel/component/irc/IrcConsumer.java | 17 ++++++++--------- .../org/apache/camel/component/irc/IrcProducer.java | 9 +++++++++ 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/components/camel-irc/src/main/docs/irc-component.adoc b/components/camel-irc/src/main/docs/irc-component.adoc index 767e3a8..ab0538c 100644 --- a/components/camel-irc/src/main/docs/irc-component.adoc +++ b/components/camel-irc/src/main/docs/irc-component.adoc @@ -73,13 +73,14 @@ with the following path and query parameters: |=== -==== Query Parameters (24 parameters): +==== Query Parameters (25 parameters): [width="100%",cols="2,5,^1,2",options="header"] |=== | Name | Description | Default | Type | *autoRejoin* (common) | Whether to auto re-join when being kicked | true | boolean +| *commandTimeout* (common) | Delay in milliseconds before sending commands after the connection is established. | 5000 | long | *namesOnJoin* (common) | Sends NAMES command to channel after joining it. link onReply has to be true in order to process the result which will have the header value irc.num = '353'. | false | boolean | *nickname* (common) | The nickname used in chat. | | String | *persistent* (common) | *Deprecated* Use persistent messages. | true | boolean diff --git a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConfiguration.java b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConfiguration.java index 3680f3f..aca3432 100644 --- a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConfiguration.java +++ b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConfiguration.java @@ -92,6 +92,8 @@ public class IrcConfiguration implements Cloneable { private SSLContextParameters sslContextParameters; @UriParam(label = "security", secret = true) private String nickPassword; + @UriParam(defaultValue = "5000") + private long commandTimeout = 5000L; public IrcConfiguration() { } @@ -459,7 +461,19 @@ public class IrcConfiguration implements Cloneable { public void setNickPassword(String nickPassword) { this.nickPassword = nickPassword; } - + + /** + * Delay in milliseconds before sending commands after the connection is established. + * @param timeout timeout value in milliseconds + */ + public void setCommandTimeout(long timeout) { + this.commandTimeout = timeout; + } + + public long getCommandTimeout() { + return commandTimeout; + } + public boolean isNamesOnJoin() { return namesOnJoin; } diff --git a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConsumer.java b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConsumer.java index e132f1a..506a24d 100644 --- a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConsumer.java +++ b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConsumer.java @@ -60,16 +60,15 @@ public class IrcConsumer extends DefaultConsumer { listener = getListener(); connection.addIRCEventListener(listener); + log.debug("Sleeping for {} seconds before sending commands.", configuration.getCommandTimeout() / 1000); + // sleep for a few seconds as the server sometimes takes a moment to fully connect, print banners, etc after connection established + try { + Thread.sleep(configuration.getCommandTimeout()); + } catch (InterruptedException ex) { + // ignore + } if (ObjectHelper.isNotEmpty(configuration.getNickPassword())) { - try { - // TODO : sleep before joinChannels() may be another useful config param (even when not identifying) - // sleep for a few seconds as the server sometimes takes a moment to fully connect, print banners, etc after connection established - LOG.debug("Sleeping for 5 seconds before identifying to NickServ."); - Thread.sleep(5000); - } catch (InterruptedException ex) { - // ignore - } - LOG.debug("Identifying and enforcing nick with NickServ."); + log.debug("Identifying and enforcing nick with NickServ."); // Identify nick and enforce, https://meta.wikimedia.org/wiki/IRC/Instructions#Register_your_nickname.2C_identify.2C_and_enforce connection.doPrivmsg("nickserv", "identify " + configuration.getNickPassword()); connection.doPrivmsg("nickserv", "set enforce on"); diff --git a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcProducer.java b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcProducer.java index a129be9..9d7541c 100644 --- a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcProducer.java +++ b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcProducer.java @@ -32,6 +32,7 @@ public class IrcProducer extends DefaultProducer { private static final Logger LOG = LoggerFactory.getLogger(IrcProducer.class); + private final IrcConfiguration configuration; private IRCConnection connection; private IrcEndpoint endpoint; private IRCEventAdapter listener; @@ -40,6 +41,7 @@ public class IrcProducer extends DefaultProducer { super(endpoint); this.endpoint = endpoint; this.connection = connection; + this.configuration = endpoint.getConfiguration(); } public void process(Exchange exchange) throws Exception { @@ -71,6 +73,13 @@ public class IrcProducer extends DefaultProducer { super.doStart(); listener = getListener(); connection.addIRCEventListener(listener); + log.debug("Sleeping for {} seconds before sending commands.", configuration.getCommandTimeout() / 1000); + // sleep for a few seconds as the server sometimes takes a moment to fully connect, print banners, etc after connection established + try { + Thread.sleep(configuration.getCommandTimeout()); + } catch (InterruptedException ex) { + // ignore + } endpoint.joinChannels(); }