[ https://issues.apache.org/jira/browse/NIFI-329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16056795#comment-16056795 ]
ASF GitHub Bot commented on NIFI-329: ------------------------------------- Github user trkurc commented on a diff in the pull request: https://github.com/apache/nifi/pull/1541#discussion_r123136109 --- Diff: nifi-nar-bundles/nifi-irc-bundle/nifi-irc-processors/src/main/java/org/apache/nifi/processors/irc/PublishIRC.java --- @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.nifi.processors.irc; + +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.TriggerSerially; +import org.apache.nifi.annotation.behavior.WritesAttribute; +import org.apache.nifi.annotation.behavior.WritesAttributes; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnStopped; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.ProcessSessionFactory; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.io.InputStreamCallback; +import org.apache.nifi.processors.irc.handlers.PublisherEventHandler; +import org.apache.nifi.stream.io.StreamUtils; +import org.apache.nifi.util.StopWatch; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.concurrent.TimeUnit; + +@Tags({"publish", "irc"}) +@TriggerSerially +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) + +@CapabilityDescription("This processor implements a IRC client allowing nifi to publish flowfile contents into a " + + "predefined IRC channel. " + "\n" + + "IMPORTANT NOTE: Due to the nature of the IRC protocol, no delivery guarantees are offered. USE WITH CARE") + +@WritesAttributes({ + @WritesAttribute(attribute = "irc.sender", description = "The IRC nickname source user of the message"), + @WritesAttribute(attribute = "irc.channel", description = "The channel from where the message was received "), + @WritesAttribute(attribute = "irc.server", description = "The values IRC channel where the message was received from")}) +public class PublishIRC extends AbstractIRCProcessor { + + private volatile PublisherEventHandler eventHandler; + + @OnStopped + public void onUnscheduled(ProcessContext context) { + clearSetup(client, eventHandler); + client = null; + } + + @Override + public void onTrigger(ProcessContext context, ProcessSessionFactory sessionFactory) throws ProcessException { + ProcessSession session = sessionFactory.createSession(); + + + + if (client == null) { + // Initialise the handler that will be provided to the setupClient super method + this.eventHandler = new PublisherEventHandler(context, sessionFactory, getLogger()); + this.client = ircClientService.getClient(); --- End diff -- I'm a bit confused why the client is set up and connected in onTrigger instead on onScheduled > Provide processor(s) to interact with IRC > ----------------------------------------- > > Key: NIFI-329 > URL: https://issues.apache.org/jira/browse/NIFI-329 > Project: Apache NiFi > Issue Type: Sub-task > Components: Examples > Reporter: Joseph Witt > Assignee: Andre F de Miranda > Priority: Minor > Labels: beginner > > - Processor(s) to interact with IRC (sending/receiving) > One approach: A single processor which both sends and receives data from a > given IRC channel. The user can configure the IRC host, username, password, > channel, etc... The connection then is held open and the processor will > produce an output flow file for every message received in the IRC channel > which will have as attributes the message content, sender, time, etc.. That > same processor can also read flow files from its queue which contain message > text in an attribute. In this manner the processor can support bidirectional > interaction with IRC. > Would then also be interesting to make it really easy for a user to generate > a message via the UI as well as easily to consume a message via the UI. > These could be very generic processors/widgets for creation/consumption and > good for these sorts of cases. > There are active IRC channels which are great for demonstration of relatively > active datastreams. Weather updates, Wikipedia updates, etc... -- This message was sent by Atlassian JIRA (v6.4.14#64029)