mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-21 01:01:43 +00:00
Add PortForwarder class (#1890)
This class provides an easy way to forward local ports to another host/port. This is primarily useful to provide a way to access Ethernet-connected devices from a computer tethered to the RoboRIO USB port. The most natural spot to put the shared implementation of this class was into wpiutil, so a wpiutilJNI library has been added.
This commit is contained in:
54
wpiutil/src/main/native/cpp/jni/WPIUtilJNI.cpp
Normal file
54
wpiutil/src/main/native/cpp/jni/WPIUtilJNI.cpp
Normal file
@@ -0,0 +1,54 @@
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Copyright (c) 2019 FIRST. All Rights Reserved. */
|
||||
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
||||
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
||||
/* the project. */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
#include <jni.h>
|
||||
|
||||
#include "edu_wpi_first_wpiutil_WPIUtilJNI.h"
|
||||
#include "wpi/PortForwarder.h"
|
||||
#include "wpi/jni_util.h"
|
||||
|
||||
using namespace wpi::java;
|
||||
|
||||
extern "C" {
|
||||
|
||||
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {
|
||||
JNIEnv* env;
|
||||
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK)
|
||||
return JNI_ERR;
|
||||
|
||||
return JNI_VERSION_1_6;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL JNI_OnUnload(JavaVM* vm, void* reserved) {}
|
||||
|
||||
/*
|
||||
* Class: edu_wpi_first_wpiutil_WPIUtilJNI
|
||||
* Method: addPortForwarder
|
||||
* Signature: (ILjava/lang/String;I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_edu_wpi_first_wpiutil_WPIUtilJNI_addPortForwarder
|
||||
(JNIEnv* env, jclass, jint port, jstring remoteHost, jint remotePort)
|
||||
{
|
||||
wpi::PortForwarder::GetInstance().Add(static_cast<unsigned int>(port),
|
||||
JStringRef{env, remoteHost}.str(),
|
||||
static_cast<unsigned int>(remotePort));
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: edu_wpi_first_wpiutil_WPIUtilJNI
|
||||
* Method: removePortForwarder
|
||||
* Signature: (I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_edu_wpi_first_wpiutil_WPIUtilJNI_removePortForwarder
|
||||
(JNIEnv* env, jclass, jint port)
|
||||
{
|
||||
wpi::PortForwarder::GetInstance().Remove(port);
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
Reference in New Issue
Block a user