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 TimeSyncServer { 021 private final Object mutex = new Object(); 022 private long handle; 023 024 public TimeSyncServer(int port) { 025 this.handle = TimeSyncServer.create(port); 026 } 027 028 public void start() { 029 synchronized (mutex) { 030 if (handle != 0) { 031 TimeSyncServer.start(handle); 032 } else { 033 System.err.println("TimeSyncServer: use after free?"); 034 } 035 } 036 } 037 038 public void stop() { 039 if (handle != 0) { 040 TimeSyncServer.stop(handle); 041 handle = 0; 042 } 043 } 044 045 private static native long create(int port); 046 047 private static native void start(long handle); 048 049 private static native void stop(long handle); 050}