#
# 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.
#
Flow Controller:
    name: MiNiFi Flow
    id: 2438e3c8-015a-1000-79ca-83af40ec1990
Processors:
    - name: pcap
      id: 2438e3c8-015a-1000-79ca-83af40ec1991
      class: org.apache.nifi.processors.standard.CapturePacket
      max concurrent tasks: 1
      scheduling strategy: TIMER_DRIVEN
      scheduling period: 10 msec
      penalization period: 10 msec
      yield period: 10 msec
      run duration nanos: 0
      auto-terminated relationships list:
      Properties:
        Batch Size: 1
    - name: LogAttribute
      id: 2438e3c8-015a-1000-79ca-83af40ec1992
      class: org.apache.nifi.processors.standard.LogAttribute
      max concurrent tasks: 1
      scheduling strategy: TIMER_DRIVEN
      scheduling period: 1 sec
      penalization period: 30 sec
      yield period: 1 sec
      run duration nanos: 0
      auto-terminated relationships list: response
      Properties:
        Log Level: info
        Log Payload: true

Connections:
    - name: TransferFilesToRPG
      id: 2438e3c8-015a-1000-79ca-83af40ec1997
      source name: pcap
      source id: 2438e3c8-015a-1000-79ca-83af40ec1991
      source relationship name: success
      destination name: LogAttribute
      destination id: 2438e3c8-015a-1000-79ca-83af40ec1992
      max work queue size: 0
      max work queue data size: 1 MB
      flowfile expiration: 60 sec
    - name: TransferFilesToRPG2
      id: 2438e3c8-015a-1000-79ca-83af40ec1917
      source name: LogAttribute
      source id: 2438e3c8-015a-1000-79ca-83af40ec1992
      destination name: LogAttribute
      destination id: 2438e3c8-015a-1000-79ca-83af40ec1992  
      source relationship name: success
      max work queue size: 0
      max work queue data size: 1 MB
      flowfile expiration: 60 sec

Remote Processing Groups:
    
