Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBinaryStreamMonitor.java')
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBinaryStreamMonitor.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBinaryStreamMonitor.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBinaryStreamMonitor.java
new file mode 100644
index 000000000..1fe05444b
--- /dev/null
+++ b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBinaryStreamMonitor.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Paul Pazderski and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Paul Pazderski - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.debug.core.model;
+
+import org.eclipse.debug.core.IBinaryStreamListener;
+
+/**
+ * A variant of {@link IStreamMonitor} which does not touch the received content
+ * and pass it as bytes instead of strings.
+ * <p>
+ * A stream monitor manages the contents of the stream a process is writing to,
+ * and notifies registered listeners of changes in the stream.
+ * </p>
+ * <p>
+ * Clients may implement this interface. Generally, a client that provides an
+ * implementation of the {@link IBinaryStreamsProxy} interface must also provide
+ * an implementation of this interface.
+ * </p>
+ *
+ * @see org.eclipse.debug.core.model.IStreamsProxy
+ * @see org.eclipse.debug.core.model.IFlushableStreamMonitor
+ * @since 3.16
+ */
+public interface IBinaryStreamMonitor extends IFlushableStreamMonitor {
+ /**
+ * Adds the given listener to this stream monitor's registered listeners.
+ * Has no effect if an identical listener is already registered.
+ *
+ * @param listener the listener to add
+ */
+ void addBinaryListener(IBinaryStreamListener listener);
+
+ /**
+ * Returns the entire current contents of the stream. An empty array is
+ * returned if the stream is empty.
+ * <p>
+ * Note: the current content is influenced by the buffering mechanism.
+ * </p>
+ *
+ * @return the stream contents as array
+ * @see #isBuffered()
+ * @see #flushContents()
+ */
+ byte[] getData();
+
+ /**
+ * Removes the given listener from this stream monitor's registered listeners.
+ * Has no effect if the listener is not already registered.
+ *
+ * @param listener the listener to remove
+ */
+ void removeBinaryListener(IBinaryStreamListener listener);
+}

Back to the top