| // 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 streamer; |
| |
| /** |
| * Pipeline groups multiple elements. |
| */ |
| public interface Pipeline extends Element { |
| |
| static final String IN = Direction.IN.toString(); |
| static final String OUT = Direction.OUT.toString(); |
| |
| /** |
| * Add elements to pipeline. |
| * |
| * @param elements |
| */ |
| void add(Element... elements); |
| |
| /** |
| * Add elements to pipeline and link them in given order. |
| * |
| * @param elements |
| */ |
| void addAndLink(Element... elements); |
| |
| /** |
| * Link elements in given order using SyncLink. Element name can have prefix |
| * "PADNAME< " or/and suffix " >PADNAME" to use given named pads instead of |
| * "stdin" and "stdout". I.e. <code>link("foo", "bar", "baz");</code> is equal |
| * to <code>link("foo >stdin", "stdout< bar >stdin", "stdout< baz");</code> . |
| * |
| * Special elements "IN" and "OUT" are pointing to pipeline outer interfaces, |
| * so when pipeline will be connected with other elements, outside of this |
| * pipeline, they will be connected to IN and OUT elements. |
| * |
| * Empty names are skipped. |
| * |
| * Example: |
| * |
| * <pre> |
| * pipeline.link("IN", "foo", "bar", "OUT"); |
| * // Make additional branch from foo to baz, and then to OUT |
| * pipeline.link("foo >baz_out", "baz", "baz_in< OUT"); |
| * </pre> |
| * |
| * @param elements |
| * elements to link |
| */ |
| void link(String... elements); |
| |
| /** |
| * Get element by name. |
| * |
| * @return an element |
| */ |
| Element get(String elementName); |
| |
| /** |
| * Get link by element name and pad name. |
| */ |
| Link getLink(String elementName, String padName); |
| |
| /** |
| * Set link by element name and pad name. Allows to link external elements |
| * into internal elements of pipeline. Special elements "IN" and "OUT" are |
| * pointing to pipeline outer interfaces. |
| */ |
| void setLink(String elementName, String padName, Link link, Direction direction); |
| |
| /** |
| * Get link connected to given pad in given element and run it main loop. |
| * @param separateThread |
| * set to true to start main loop in separate thread. |
| * @param waitForStartEvent TODO |
| */ |
| void runMainLoop(String element, String padName, boolean separateThread, boolean waitForStartEvent); |
| |
| } |