001/* 002 * Copyright (C) Photon Vision. 003 * 004 * This program is free software: you can redistribute it and/or modify 005 * it under the terms of the GNU General Public License as published by 006 * the Free Software Foundation, either version 3 of the License, or 007 * (at your option) any later version. 008 * 009 * This program is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU General Public License for more details. 013 * 014 * You should have received a copy of the GNU General Public License 015 * along with this program. If not, see <https://www.gnu.org/licenses/>. 016 */ 017 018package org.photonvision.jni; 019 020public class QueuedFileLogger { 021 long m_handle = 0; 022 023 public QueuedFileLogger(String path) { 024 m_handle = QueuedFileLogger.create(path); 025 } 026 027 public String[] getNewlines() { 028 String newBuffer = null; 029 030 synchronized (this) { 031 if (m_handle == 0) { 032 System.err.println("QueuedFileLogger use after free"); 033 return new String[0]; 034 } 035 036 newBuffer = QueuedFileLogger.getNewLines(m_handle); 037 } 038 039 if (newBuffer == null) { 040 return new String[0]; 041 } 042 043 return newBuffer.split("\n"); 044 } 045 046 public void stop() { 047 synchronized (this) { 048 if (m_handle != 0) { 049 QueuedFileLogger.destroy(m_handle); 050 m_handle = 0; 051 } 052 } 053 } 054 055 private static native long create(String path); 056 057 private static native void destroy(long handle); 058 059 private static native String getNewLines(long handle); 060}