001/* 002 * JGrapes Event driven Framework 003 * Copyright (C) 2023 Michael N. Lipp 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <https://www.gnu.org/licenses/>. 017 */ 018 019package org.jgrapes.io.events; 020 021/** 022 * Fired when a process has exited. 023 */ 024public class ProcessExited extends Closed<Integer> { 025 026 private final StartProcess startedBy; 027 028 /** 029 * Instantiates a new event. 030 * 031 * @param startedBy the event that started the process 032 * @param exitValue the exit value 033 */ 034 public ProcessExited(StartProcess startedBy, int exitValue) { 035 setResult(exitValue); 036 this.startedBy = startedBy; 037 } 038 039 /** 040 * Returns the event that started the terminated process. 041 * 042 * @return the startedBy 043 */ 044 public StartProcess startedBy() { 045 return startedBy; 046 } 047 048 /** 049 * Convenience method to access the exit value without calling 050 * {@link #get()} (which may block). 051 * 052 * @return the exit value of the process 053 */ 054 public int exitValue() { 055 return currentResults().get(0); 056 } 057 058}