package com.intellij.javascript.karma.server.watch; import com.intellij.javascript.karma.server.KarmaServer; import org.jetbrains.annotations.NotNull; import java.io.OutputStream; import java.io.PrintWriter; /** * @author Sergey Simonchik */ public class KarmaChangedFilesManager { private final Object LOCK = new Object(); private final PrintWriter myServerProcessInput; public KarmaChangedFilesManager(@NotNull KarmaServer server) { OutputStream outputStream = server.getProcessHandler().getProcessInput(); //noinspection IOResourceOpenedButNotSafelyClosed myServerProcessInput = new PrintWriter(outputStream, false); } public void onFileChanged(@NotNull String path) { sendEvent("changed-file:", path); } public void onFileAdded(@NotNull String path) { sendEvent("added-file:", path); } public void onFileRemoved(@NotNull String path) { sendEvent("removed-file:", path); } private void sendEvent(@NotNull String prefix, @NotNull String path) { synchronized (LOCK) { myServerProcessInput.print(prefix); myServerProcessInput.print(path); myServerProcessInput.print("\n"); } } public void flush() { synchronized (LOCK) { myServerProcessInput.flush(); } } }