[ 
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)

Reply via email to