Add WIP Java language bindings

This commit is contained in:
Joseph Henry
2021-04-29 19:51:07 -07:00
parent 904e50e8e9
commit 782d221eb9
16 changed files with 3833 additions and 1074 deletions

View File

@@ -0,0 +1,194 @@
/*
* Copyright (c)2013-2021 ZeroTier, Inc.
*
* Use of this software is governed by the Business Source License included
* in the LICENSE.TXT file in the project's root directory.
*
* Change Date: 2026-01-01
*
* On the date above, in accordance with the Business Source License, use
* of this software will be governed by version 2.0 of the Apache License.
*/
/****/
package com.zerotier.sdk;
import com.zerotier.sdk.*;
/**
* Class that provides a control interface for nodes and networks by
* wrapping the ZeroTierNative class.
*/
public class ZeroTierNode {
/**
* Start the ZeroTier node
*
* @return Standard
*/
public int start()
{
return ZeroTierNative.zts_node_start();
}
/**
* Stop the ZeroTier node
*
* @return return
*/
public int stop()
{
return ZeroTierNative.zts_node_stop();
}
/**
* (Optional) Instruct ZeroTier to read and write identities and cache from a
* storage location. Note that this is an initialization method that should
* be called before {@code start()}.
*
* @param storagePath Where to read and write files
*
* @return return
*/
public int initFromStorage(String storagePath)
{
return ZeroTierNative.zts_init_from_storage(storagePath);
}
/**
* (Optional) Whether caching of peer address information to storage is allowed. This
* is true by default if {@code initFromStorage()} is used. Note that this is an
* initialization method that can only be called before {@code start()}.
*
* @param allowed Whether caching or storage of this item is allowed
*
* @return return
*/
public int initAllowPeerCache(boolean allowed)
{
return ZeroTierNative.zts_init_allow_peer_cache(allowed ? 1 : 0);
}
/**
* (Optional) Whether caching of network configuration data to storage is allowed. This
* is true by default if {@code initFromStorage()} is used. Note that this is an
* initialization method that can only be called before {@code start()}.
*
* @param allowed Whether caching or storage of this item is allowed
*
* @return return
*/
public int initAllowNetworkCache(boolean allowed)
{
return ZeroTierNative.zts_init_allow_net_cache(allowed ? 1 : 0);
}
/**
* (Optional) Whether caching of identity key pairs to storage is allowed. This
* is true by default if {@code initFromStorage()} is used. Note that this is an
* initialization method that can only be called before {@code start()}.
*
* @param allowed Whether caching or storage of this item is allowed
*
* @return return
*/
public int initAllowIdCache(boolean allowed)
{
return ZeroTierNative.zts_init_allow_id_cache(allowed ? 1 : 0);
}
/**
* (Optional) Whether caching of root topology to storage is allowed. This
* is true by default if {@code initFromStorage()} is used. Note that this is an
* initialization method that can only be called before {@code start()}.
*
* @param allowed Whether caching or storage of this item is allowed
*
* @return return
*/
public int initAllowRootsCache(boolean allowed)
{
return ZeroTierNative.zts_init_allow_roots_cache(allowed ? 1 : 0);
}
/**
* (Optional) Set the ZeroTier service port. Note that this is an
* initialization method that can only be called before {@code start()}.
*
* @param port Port number
*
* @return return
*/
public int initSetPort(short port)
{
return ZeroTierNative.zts_init_set_port(port);
}
/**
* (Optional) Set the event handler function. Note that this is an
* initialization method that can only be called before {@code start()}.
*
* @param handler Function to handle internal ZeroTier events
*
* @return return
*/
public int initSetEventHandler(ZeroTierEventListener handler)
{
return ZeroTierNative.zts_init_set_event_handler(handler);
}
/**
* Return whether the ZeroTier node is currently online (able to reach a root)
*
* @return return
*/
public boolean isOnline()
{
return ZeroTierNative.zts_node_is_online() == 1;
}
/**
* Join a network
*
* @param networkId Network to join
*
* @return return
*/
public int join(long networkId)
{
return ZeroTierNative.zts_net_join(networkId);
}
/**
* Leave a network
*
* @param networkId Network to leave
*
* @return return
*/
public int leave(long networkId)
{
return ZeroTierNative.zts_net_leave(networkId);
}
/**
* Return whether the given network is ready to process traffic
*
* @param networkId Network to test
*
* @return return
*/
public boolean isNetworkTransportReady(long networkId)
{
return ZeroTierNative.zts_net_transport_is_ready(networkId) == 1;
}
/**
* Get the identity of this node (public key)
*
* @return 64-bit integer representing the 10-digit hexadecimal node ID
*/
public long getId()
{
return ZeroTierNative.zts_node_get_id();
}
}