diff --git a/LICENSE b/LICENSE index 63c0841..2e12b61 100644 --- a/LICENSE +++ b/LICENSE @@ -33,50 +33,141 @@ Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply See: https://github.com/JetBrains/kotlin/blob/master/license/README.md + - Collections - Collection types and utilities to enhance the default collections. + [The Apache Software License, Version 2.0] + https://git.dorkbox.com/dorkbox/Collections + Copyright 2023 + Dorkbox LLC + + Extra license information + - Bias, BinarySearch - + [MIT License] + https://git.dorkbox.com/dorkbox/Collections + https://github.com/timboudreau/util + Copyright 2013 + Tim Boudreau + + - ConcurrentEntry - + [The Apache Software License, Version 2.0] + https://git.dorkbox.com/dorkbox/Collections + Copyright 2016 + bennidi + dorkbox + + - Collection Utilities (Array, ArrayMap, BooleanArray, ByteArray, CharArray, FloatArray, IdentityMap, IntArray, IntFloatMap, IntIntMap, IntMap, IntSet, LongArray, LongMap, ObjectFloatMap, ObjectIntMap, ObjectMap, ObjectSet, OrderedMap, OrderedSet) - + [The Apache Software License, Version 2.0] + https://git.dorkbox.com/dorkbox/Collections + https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/utils + Copyright 2011 + LibGDX + Mario Zechner (badlogicgames@gmail.com) + Nathan Sweet (nathan.sweet@gmail.com) + + - Predicate - + [The Apache Software License, Version 2.0] + https://git.dorkbox.com/dorkbox/Collections + https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/utils + Copyright 2011 + LibGDX + Mario Zechner (badlogicgames@gmail.com) + Nathan Sweet (nathan.sweet@gmail.com) + xoppa + + - Select, QuickSelect - + [The Apache Software License, Version 2.0] + https://git.dorkbox.com/dorkbox/Collections + https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/utils + Copyright 2011 + LibGDX + Mario Zechner (badlogicgames@gmail.com) + Nathan Sweet (nathan.sweet@gmail.com) + Jon Renner + + - Kotlin - + [The Apache Software License, Version 2.0] + https://github.com/JetBrains/kotlin + Copyright 2020 + JetBrains s.r.o. and Kotlin Programming Language contributors + Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply + See: https://github.com/JetBrains/kotlin/blob/master/license/README.md + + - Updates - Software Update Management + [The Apache Software License, Version 2.0] + https://git.dorkbox.com/dorkbox/Updates + Copyright 2021 + Dorkbox LLC + + Extra license information + - Kotlin - + [The Apache Software License, Version 2.0] + https://github.com/JetBrains/kotlin + Copyright 2020 + JetBrains s.r.o. and Kotlin Programming Language contributors + Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply + See: https://github.com/JetBrains/kotlin/blob/master/license/README.md + - NetworkUtils - Utilities for managing network configurations, IP/MAC address conversion, and ping (via OS native commands) [The Apache Software License, Version 2.0] https://git.dorkbox.com/dorkbox/NetworkUtils - Copyright 2022 + Copyright 2023 Dorkbox LLC Extra license information - Netty - [The Apache Software License, Version 2.0] - https://netty.io/ + https://netty.io Copyright 2014 The Netty Project This product contains a modified portion of Netty Network Utils - Apache Harmony - [The Apache Software License, Version 2.0] - http://archive.apache.org/dist/harmony/ + https://archive.apache.org/dist/harmony/ Copyright 2010 The Apache Software Foundation This product contains a modified portion of 'Apache Harmony', an open source Java SE + - Mozilla Public Suffix List - + [Mozilla Public License 2.0] + https://publicsuffix.org/list/public_suffix_list.dat + Copyright 2010 + The Apache Software Foundation + - Apache HTTP Utils - [The Apache Software License, Version 2.0] - http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/httpclient5/src/main/java/org/apache/hc/client5/http/psl/ + https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/httpclient5/src/main/java/org/apache/hc/client5/http/psl/ Copyright 2010 The Apache Software Foundation This product contains a modified portion of 'PublicSuffixDomainFilter.java' + - UrlRewriteFilter - UrlRewriteFilter is a Java Web Filter for any J2EE compliant web application server + [BSD 3-Clause License] + https://github.com/paultuckey/urlrewritefilter + Copyright 2022 + Paul Tuckey + + - kotlinx.coroutines - Library support for Kotlin coroutines with multiplatform support + [The Apache Software License, Version 2.0] + https://github.com/Kotlin/kotlinx.coroutines + Copyright 2023 + JetBrains s.r.o. + - SLF4J - Simple facade or abstraction for various logging frameworks [MIT License] - http://www.slf4j.org - Copyright 2022 + https://www.slf4j.org + Copyright 2023 QOS.ch - JNA - Simplified native library access for Java. [The Apache Software License, Version 2.0] https://github.com/twall/jna - Copyright 2022 + Copyright 2023 Timothy Wall - JNA-Platform - Mappings for a number of commonly used platform functions [The Apache Software License, Version 2.0] https://github.com/twall/jna - Copyright 2022 + Copyright 2023 Timothy Wall - Kotlin - @@ -90,7 +181,7 @@ - Executor - Shell, JVM, and SSH command execution on Linux, MacOS, or Windows for Java 8+ [The Apache Software License, Version 2.0] https://git.dorkbox.com/dorkbox/Executor - Copyright 2022 + Copyright 2023 Dorkbox LLC Extra license information @@ -117,25 +208,25 @@ - kotlinx.coroutines - Library support for Kotlin coroutines with multiplatform support [The Apache Software License, Version 2.0] https://github.com/Kotlin/kotlinx.coroutines - Copyright 2022 + Copyright 2023 JetBrains s.r.o. - SLF4J - Simple facade or abstraction for various logging frameworks [MIT License] - http://www.slf4j.org - Copyright 2022 + https://www.slf4j.org + Copyright 2023 QOS.ch - Logback - Logback is a logging framework for Java applications [The Apache Software License, Version 2.0] - http://logback.qos.ch - Copyright 2022 + https://logback.qos.ch + Copyright 2023 QOS.ch - SSHJ - SSHv2 library for Java [The Apache Software License, Version 2.0] https://github.com/hierynomus/sshj - Copyright 2022 + Copyright 2023 Jeroen van Erp SSHJ Contributors @@ -152,13 +243,13 @@ - JZlib - [The Apache Software License, Version 2.0] - http://www.jcraft.com/jzlib + https://github.com/ymnk/jzlib Atsuhiko Yamanaka JCraft, Inc. - Bouncy Castle Crypto - [The Apache Software License, Version 2.0] - http://www.bouncycastle.org + https://www.bouncycastle.org The Legion of the Bouncy Castle Inc - ed25519-java - @@ -226,540 +317,6 @@ Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - Utilities - Utilities for use within Java projects - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Utilities - Copyright 2023 - Dorkbox LLC - - Extra license information - - MersenneTwisterFast - - [BSD 3-Clause License] - https://git.dorkbox.com/dorkbox/Utilities - Copyright 2003 - Sean Luke - Michael Lecuyer (portions Copyright 1993 - - - FileUtil (code from FilenameUtils.java for normalize + dependencies) - - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Utilities - http://commons.apache.org/proper/commons-io/ - Copyright 2013 - The Apache Software Foundation - Kevin A. Burton - Scott Sanders - Daniel Rall - Christoph.Reck - Peter Donald - Jeff Turner - Matthew Hawthorne - Martin Cooper - Jeremias Maerki - Stephen Colebourne - - - FastThreadLocal - - [BSD 3-Clause License] - https://git.dorkbox.com/dorkbox/Utilities - https://github.com/LWJGL/lwjgl3/blob/5819c9123222f6ce51f208e022cb907091dd8023/modules/core/src/main/java/org/lwjgl/system/FastThreadLocal.java - https://github.com/riven8192/LibStruct/blob/master/src/net/indiespot/struct/runtime/FastThreadLocal.java - Copyright 2014 - Lightweight Java Game Library Project - Riven - - - Base64Fast - - [BSD 3-Clause License] - https://git.dorkbox.com/dorkbox/Utilities - http://migbase64.sourceforge.net/ - Copyright 2004 - Mikael Grev, MiG InfoCom AB. (base64@miginfocom.com) - - - BCrypt - - [BSD 2-Clause "Simplified" or "FreeBSD" license] - https://git.dorkbox.com/dorkbox/Utilities - http://www.mindrot.org/projects/jBCrypt - Copyright 2006 - Damien Miller (djm@mindrot.org) - GWT modified version - - - Modified hex conversion utility methods - - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Utilities - https://netty.io - Copyright 2014 - The Netty Project - - - Retrofit - A type-safe HTTP client for Android and Java - [The Apache Software License, Version 2.0] - https://github.com/square/retrofit - Copyright 2020 - Square, Inc - - - Resource Listing - Listing the contents of a resource directory - [The Apache Software License, Version 2.0] - http://www.uofr.net/~greg/java/get-resource-listing.html - Copyright 2017 - Greg Briggs - - - CommonUtils - Common utility extension functions for kotlin - [The Apache Software License, Version 2.0] - https://www.pronghorn.tech - Copyright 2017 - Pronghorn Technology LLC - Dorkbox LLC - - - UrlRewriteFilter - UrlRewriteFilter is a Java Web Filter for any J2EE compliant web application server - [BSD 3-Clause License] - https://github.com/paultuckey/urlrewritefilter - Copyright 2022 - Paul Tuckey - - - kotlinx.coroutines - Library support for Kotlin coroutines with multiplatform support - [The Apache Software License, Version 2.0] - https://github.com/Kotlin/kotlinx.coroutines - Copyright 2023 - JetBrains s.r.o. - - - Java Uuid Generator - A set of Java classes for working with UUIDs - [The Apache Software License, Version 2.0] - https://github.com/cowtowncoder/java-uuid-generator - Copyright 2023 - Tatu Saloranta (tatu.saloranta@iki.fi) - Contributors. See source release-notes/CREDITS - - - SLF4J - Simple facade or abstraction for various logging frameworks - [MIT License] - https://www.slf4j.org - Copyright 2023 - QOS.ch - - - XZ for Java - Complete implementation of XZ data compression in pure Java - [Public Domain, per Creative Commons CC0] - https://tukaani.org/xz/java.html - Copyright 2023 - Lasse Collin - Igor Pavlov - - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - - Netty - An event-driven asynchronous network application framework - [The Apache Software License, Version 2.0] - https://netty.io - Copyright 2023 - The Netty Project - Contributors. See source NOTICE - - - Bouncy Castle Crypto - Lightweight cryptography API and JCE Extension - [The Apache Software License, Version 2.0] - https://www.bouncycastle.org - Copyright 2023 - The Legion of the Bouncy Castle Inc - - - Lightweight Java Game Library - Java library that enables cross-platform access to popular native APIs - [BSD 3-Clause License] - https://github.com/LWJGL/lwjgl3 - Copyright 2023 - Lightweight Java Game Library - - - TypeTools - A simple, zero-dependency library for working with types. Supports Java 1.6+ and Android. - [The Apache Software License, Version 2.0] - https://github.com/jhalterman/typetools - Copyright 2023 - Jonathan Halterman and friends - - - Collections - Niche collections to augment what is already available. - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Collections - Copyright 2023 - Dorkbox LLC - - Extra license information - - Bias, BinarySearch - - [MIT License] - https://git.dorkbox.com/dorkbox/Collections - https://github.com/timboudreau/util - Copyright 2013 - Tim Boudreau - - - ConcurrentEntry - - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Collections - Copyright 2016 - bennidi - dorkbox - - - Collection Utilities (Array, ArrayMap, BooleanArray, ByteArray, CharArray, FloatArray, IdentityMap, IntArray, IntFloatMap, IntIntMap, IntMap, IntSet, LongArray, LongMap, ObjectFloatMap, ObjectIntMap, ObjectMap, ObjectSet, OrderedMap, OrderedSet) - - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Collections - https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/utils - Copyright 2011 - LibGDX - Mario Zechner (badlogicgames@gmail.com) - Nathan Sweet (nathan.sweet@gmail.com) - - - Predicate - - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Collections - https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/utils - Copyright 2011 - LibGDX - Mario Zechner (badlogicgames@gmail.com) - Nathan Sweet (nathan.sweet@gmail.com) - xoppa - - - Select, QuickSelect - - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Collections - https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/utils - Copyright 2011 - LibGDX - Mario Zechner (badlogicgames@gmail.com) - Nathan Sweet (nathan.sweet@gmail.com) - Jon Renner - - - TimSort, ComparableTimSort - - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Collections - https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/utils - Copyright 2008 - The Android Open Source Project - - - ConcurrentWeakIdentityHashMap - Concurrent WeakIdentity HashMap - [The Apache Software License, Version 2.0] - https://github.com/spring-projects/spring-loaded/blob/master/springloaded/src/main/java/org/springsource/loaded/support/ConcurrentWeakIdentityHashMap.java - Copyright 2016 - zhanhb - - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - - Updates - Software Update Management - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Updates - Copyright 2021 - Dorkbox LLC - - Extra license information - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - - Executor - Shell, JVM, and SSH command execution on Linux, MacOS, or Windows for Java 8+ - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Executor - Copyright 2023 - Dorkbox LLC - - Extra license information - - ZT Process Executor - - [The Apache Software License, Version 2.0] - https://github.com/zeroturnaround/zt-exec - Copyright 2014 - ZeroTurnaround LLC - - - Apache Commons Exec - - [The Apache Software License, Version 2.0] - https://commons.apache.org/proper/commons-exec/ - Copyright 2014 - The Apache Software Foundation - - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - - kotlinx.coroutines - Library support for Kotlin coroutines with multiplatform support - [The Apache Software License, Version 2.0] - https://github.com/Kotlin/kotlinx.coroutines - Copyright 2023 - JetBrains s.r.o. - - - SLF4J - Simple facade or abstraction for various logging frameworks - [MIT License] - http://www.slf4j.org - Copyright 2023 - QOS.ch - - - Logback - Logback is a logging framework for Java applications - [The Apache Software License, Version 2.0] - http://logback.qos.ch - Copyright 2023 - QOS.ch - - - SSHJ - SSHv2 library for Java - [The Apache Software License, Version 2.0] - https://github.com/hierynomus/sshj - Copyright 2023 - Jeroen van Erp - SSHJ Contributors - - Extra license information - - Apache MINA - - [The Apache Software License, Version 2.0] - https://mina.apache.org/sshd-project/ - The Apache Software Foundation - - - Apache Commons-Net - - [The Apache Software License, Version 2.0] - https://commons.apache.org/proper/commons-net/ - The Apache Software Foundation - - - JZlib - - [The Apache Software License, Version 2.0] - http://www.jcraft.com/jzlib - Atsuhiko Yamanaka - JCraft, Inc. - - - Bouncy Castle Crypto - - [The Apache Software License, Version 2.0] - http://www.bouncycastle.org - The Legion of the Bouncy Castle Inc - - - ed25519-java - - [Public Domain, per Creative Commons CC0] - https://github.com/str4d/ed25519-java - https://github.com/str4d - - - Updates - Software Update Management - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Updates - Copyright 2021 - Dorkbox LLC - - Extra license information - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - - NetworkUtils - Utilities for managing network configurations, IP/MAC address conversion, and ping (via OS native commands) - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/NetworkUtils - Copyright 2022 - Dorkbox LLC - - Extra license information - - Netty - - [The Apache Software License, Version 2.0] - https://netty.io/ - Copyright 2014 - The Netty Project - This product contains a modified portion of Netty Network Utils - - - Apache Harmony - - [The Apache Software License, Version 2.0] - http://archive.apache.org/dist/harmony/ - Copyright 2010 - The Apache Software Foundation - This product contains a modified portion of 'Apache Harmony', an open source Java SE - - - Apache HTTP Utils - - [The Apache Software License, Version 2.0] - http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/httpclient5/src/main/java/org/apache/hc/client5/http/psl/ - Copyright 2010 - The Apache Software Foundation - This product contains a modified portion of 'PublicSuffixDomainFilter.java' - - - SLF4J - Simple facade or abstraction for various logging frameworks - [MIT License] - http://www.slf4j.org - Copyright 2022 - QOS.ch - - - JNA - Simplified native library access for Java. - [The Apache Software License, Version 2.0] - https://github.com/twall/jna - Copyright 2022 - Timothy Wall - - - JNA-Platform - Mappings for a number of commonly used platform functions - [The Apache Software License, Version 2.0] - https://github.com/twall/jna - Copyright 2022 - Timothy Wall - - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - - Executor - Shell, JVM, and SSH command execution on Linux, MacOS, or Windows for Java 8+ - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Executor - Copyright 2022 - Dorkbox LLC - - Extra license information - - ZT Process Executor - - [The Apache Software License, Version 2.0] - https://github.com/zeroturnaround/zt-exec - Copyright 2014 - ZeroTurnaround LLC - - - Apache Commons Exec - - [The Apache Software License, Version 2.0] - https://commons.apache.org/proper/commons-exec/ - Copyright 2014 - The Apache Software Foundation - - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - - kotlinx.coroutines - Library support for Kotlin coroutines with multiplatform support - [The Apache Software License, Version 2.0] - https://github.com/Kotlin/kotlinx.coroutines - Copyright 2022 - JetBrains s.r.o. - - - SLF4J - Simple facade or abstraction for various logging frameworks - [MIT License] - http://www.slf4j.org - Copyright 2022 - QOS.ch - - - Logback - Logback is a logging framework for Java applications - [The Apache Software License, Version 2.0] - http://logback.qos.ch - Copyright 2022 - QOS.ch - - - SSHJ - SSHv2 library for Java - [The Apache Software License, Version 2.0] - https://github.com/hierynomus/sshj - Copyright 2022 - Jeroen van Erp - SSHJ Contributors - - Extra license information - - Apache MINA - - [The Apache Software License, Version 2.0] - https://mina.apache.org/sshd-project/ - The Apache Software Foundation - - - Apache Commons-Net - - [The Apache Software License, Version 2.0] - https://commons.apache.org/proper/commons-net/ - The Apache Software Foundation - - - JZlib - - [The Apache Software License, Version 2.0] - http://www.jcraft.com/jzlib - Atsuhiko Yamanaka - JCraft, Inc. - - - Bouncy Castle Crypto - - [The Apache Software License, Version 2.0] - http://www.bouncycastle.org - The Legion of the Bouncy Castle Inc - - - ed25519-java - - [Public Domain, per Creative Commons CC0] - https://github.com/str4d/ed25519-java - https://github.com/str4d - - - Updates - Software Update Management - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Updates - Copyright 2021 - Dorkbox LLC - - Extra license information - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - - Updates - Software Update Management - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Updates - Copyright 2021 - Dorkbox LLC - - Extra license information - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - - OS - Information about the system, Java runtime, OS, Window Manager, and Desktop Environment. - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/OS - Copyright 2023 - Dorkbox LLC - - Extra license information - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - - Updates - Software Update Management - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Updates - Copyright 2021 - Dorkbox LLC - - Extra license information - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - - Updates - Software Update Management - [The Apache Software License, Version 2.0] - https://git.dorkbox.com/dorkbox/Updates - Copyright 2021 - Dorkbox LLC - - Extra license information - - Kotlin - - [The Apache Software License, Version 2.0] - https://github.com/JetBrains/kotlin - Copyright 2020 - JetBrains s.r.o. and Kotlin Programming Language contributors - Kotlin Compiler, Test Data+Libraries, and Tools repository contain third-party code, to which different licenses may apply - See: https://github.com/JetBrains/kotlin/blob/master/license/README.md - - Updates - Software Update Management [The Apache Software License, Version 2.0] https://git.dorkbox.com/dorkbox/Updates diff --git a/README.md b/README.md index 25b6b19..b93a6de 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Maven Info com.dorkbox NetworkDNS - 2.9 + 2.10 ``` @@ -27,7 +27,7 @@ Gradle Info ``` dependencies { ... - implementation("com.dorkbox:NetworkDNS:2.9") + implementation("com.dorkbox:NetworkDNS:2.10") } ``` diff --git a/build.gradle.kts b/build.gradle.kts index e29eb53..8aa8495 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright 2020 dorkbox, llc + * Copyright 2023 dorkbox, llc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -import java.time.Instant +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile /////////////////////////////// ////// PUBLISH TO SONATYPE / MAVEN CENTRAL @@ -25,9 +25,9 @@ import java.time.Instant gradle.startParameter.showStacktrace = ShowStacktrace.ALWAYS // always show the stacktrace! plugins { - id("com.dorkbox.GradleUtils") version "3.13" - id("com.dorkbox.Licensing") version "2.22" - id("com.dorkbox.VersionUpdate") version "2.7" + id("com.dorkbox.GradleUtils") version "3.17" + id("com.dorkbox.Licensing") version "2.25" + id("com.dorkbox.VersionUpdate") version "2.8" id("com.dorkbox.GradlePublish") version "1.18" kotlin("jvm") version "1.8.0" @@ -37,7 +37,7 @@ object Extras { // set for the project const val description = "High-performance and event-driven/reactive DNS stack for Java 8+" const val group = "com.dorkbox" - const val version = "2.9" + const val version = "2.10" // set as project.ext const val name = "NetworkDNS" @@ -45,8 +45,6 @@ object Extras { const val vendor = "Dorkbox LLC" const val vendorUrl = "https://dorkbox.com" const val url = "https://git.dorkbox.com/dorkbox/NetworkDNS" - - val buildDate = Instant.now().toString() } /////////////////////////////// @@ -81,25 +79,25 @@ tasks.jar.get().apply { attributes["Specification-Vendor"] = Extras.vendor attributes["Implementation-Title"] = "${Extras.group}.${Extras.id}" - attributes["Implementation-Version"] = Extras.buildDate + attributes["Implementation-Version"] = GradleUtils.now() attributes["Implementation-Vendor"] = Extras.vendor } } dependencies { - api("com.dorkbox:NetworkUtils:2.19.1") + api("com.dorkbox:Collections:2.0") + api("com.dorkbox:NetworkUtils:2.22") api("com.dorkbox:OS:1.6") - api("com.dorkbox:Utilities:1.40") api("com.dorkbox:Updates:1.1") - val nettyVer = "4.1.89.Final" + val nettyVer = "4.1.96.Final" api("io.netty:netty-buffer:$nettyVer") api("io.netty:netty-transport:$nettyVer") api("io.netty:netty-transport-native-epoll:$nettyVer") api("io.netty:netty-transport-classes-kqueue:$nettyVer") api("io.netty:netty-codec:$nettyVer") - api("org.slf4j:slf4j-api:2.0.6") + api("org.slf4j:slf4j-api:2.0.7") testImplementation("junit:junit:4.13.2") testImplementation("ch.qos.logback:logback-classic:1.4.5") @@ -128,3 +126,14 @@ publishToSonatype { email = "email@dorkbox.com" } } +repositories { + mavenCentral() +} +val compileKotlin: KotlinCompile by tasks +compileKotlin.kotlinOptions { + jvmTarget = "1.8" +} +val compileTestKotlin: KotlinCompile by tasks +compileTestKotlin.kotlinOptions { + jvmTarget = "1.8" +} diff --git a/src/dorkbox/dns/DnsClient.kt b/src/dorkbox/dns/DnsClient.kt index 4f5482e..01c231a 100644 --- a/src/dorkbox/dns/DnsClient.kt +++ b/src/dorkbox/dns/DnsClient.kt @@ -1,5 +1,5 @@ /* - * Copyright 2021 dorkbox, llc + * Copyright 2023 dorkbox, llc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import dorkbox.dns.dns.resolver.addressProvider.DnsServerAddressStreamProvider import dorkbox.dns.dns.resolver.addressProvider.SequentialDnsServerAddressStreamProvider import dorkbox.dns.dns.resolver.cache.DefaultDnsCache import dorkbox.dns.dns.resolver.cache.DnsCache +import dorkbox.dns.dns.utils.NamedThreadFactory import dorkbox.dns.util.NativeLibrary import dorkbox.dns.util.Shutdownable import dorkbox.netUtil.Dns.defaultNameServers @@ -37,7 +38,6 @@ import dorkbox.os.OS.isAndroid import dorkbox.os.OS.isLinux import dorkbox.os.OS.isMacOsX import dorkbox.updates.Updates.add -import dorkbox.util.NamedThreadFactory import io.netty.channel.EventLoopGroup import io.netty.channel.ReflectiveChannelFactory import io.netty.channel.epoll.EpollDatagramChannel @@ -84,7 +84,7 @@ class DnsClient(nameServerAddresses: Collection? = defaultNa /** * Gets the version number. */ - const val version = "2.9" + const val version = "2.10" init { // Add this project to the updates system, which verifies this class + UUID + version information diff --git a/src/dorkbox/dns/DnsServer.kt b/src/dorkbox/dns/DnsServer.kt index 6db6dc3..8bb8e13 100644 --- a/src/dorkbox/dns/DnsServer.kt +++ b/src/dorkbox/dns/DnsServer.kt @@ -1,5 +1,5 @@ /* - * Copyright 2021 dorkbox, llc + * Copyright 2023 dorkbox, llc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,20 +19,16 @@ import dorkbox.dns.dns.DnsQuestion import dorkbox.dns.dns.constants.DnsRecordType import dorkbox.dns.dns.records.ARecord import dorkbox.dns.dns.serverHandlers.DnsServerHandler +import dorkbox.dns.dns.utils.NamedThreadFactory import dorkbox.dns.util.NativeLibrary import dorkbox.dns.util.Shutdownable import dorkbox.netUtil.IP.toBytes import dorkbox.os.OS.isLinux import dorkbox.os.OS.isMacOsX import dorkbox.updates.Updates.add -import dorkbox.util.NamedThreadFactory import io.netty.bootstrap.Bootstrap import io.netty.buffer.PooledByteBufAllocator -import io.netty.channel.ChannelFuture -import io.netty.channel.ChannelOption -import io.netty.channel.DefaultEventLoopGroup -import io.netty.channel.EventLoopGroup -import io.netty.channel.WriteBufferWaterMark +import io.netty.channel.* import io.netty.channel.epoll.EpollDatagramChannel import io.netty.channel.epoll.EpollEventLoopGroup import io.netty.channel.kqueue.KQueueDatagramChannel @@ -69,7 +65,7 @@ class DnsServer(host: String?, tcpPort: Int) : Shutdownable(DnsServer::class.jav /** * Gets the version number. */ - const val version = "2.9" + const val version = "2.10" var workerThreadPoolSize = (Runtime.getRuntime().availableProcessors() / 2).coerceAtLeast(1) diff --git a/src/dorkbox/dns/dns/records/Header.kt b/src/dorkbox/dns/dns/records/Header.kt index 92999f1..1b71637 100644 --- a/src/dorkbox/dns/dns/records/Header.kt +++ b/src/dorkbox/dns/dns/records/Header.kt @@ -1,5 +1,5 @@ /* - * Copyright 2021 dorkbox, llc + * Copyright 2023 dorkbox, llc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,8 +22,7 @@ import dorkbox.dns.dns.constants.DnsResponseCode import dorkbox.dns.dns.constants.DnsSection import dorkbox.dns.dns.constants.Flags import dorkbox.os.OS.LINE_SEPARATOR -import dorkbox.util.FastThreadLocal -import dorkbox.util.MersenneTwisterFast +import kotlin.random.Random /** * A DNS message header @@ -271,9 +270,9 @@ class Header : Cloneable { } companion object { - private val random: FastThreadLocal = object : FastThreadLocal() { - override fun initialValue(): MersenneTwisterFast { - return MersenneTwisterFast() + private val random: ThreadLocal = object : ThreadLocal() { + override fun initialValue(): Random { + return Random(System.nanoTime()) } } diff --git a/src/dorkbox/dns/dns/utils/NamedThreadFactory.kt b/src/dorkbox/dns/dns/utils/NamedThreadFactory.kt new file mode 100644 index 0000000..8370928 --- /dev/null +++ b/src/dorkbox/dns/dns/utils/NamedThreadFactory.kt @@ -0,0 +1,85 @@ +/* + * Copyright 2023 dorkbox, llc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package dorkbox.dns.dns.utils + +import dorkbox.dns.DnsClient +import java.util.concurrent.* +import java.util.concurrent.atomic.* + +/** + * The default thread factory with names and daemon state + */ +class NamedThreadFactory( + /** @param namePrefix what you want the subsequent threads to be named. */ + val namePrefix: String, + + /** @param group the group this thread will belong to. If NULL, it will belong to the current thread group. */ + val group: ThreadGroup = Thread.currentThread().threadGroup, + + /** @param threadPriority 1-10, with 5 being normal and 10 being max */ + val threadPriority: Int = Thread.NORM_PRIORITY, + + /** @param daemon true to stop this thread automatically when the JVM shutsdown */ + val daemon: Boolean = true, + + /** @param actionOnNewThread the action that will run whenever a new thread is created */ + val actionOnNewThread: (Thread) -> Unit + +) : ThreadFactory { + constructor(poolNamePrefix: String) : this(poolNamePrefix, Thread.currentThread().threadGroup, Thread.NORM_PRIORITY, true, {}) + constructor(poolNamePrefix: String, group: ThreadGroup) : this(poolNamePrefix, group, Thread.NORM_PRIORITY, true, {}) + constructor(poolNamePrefix: String, isDaemon: Boolean) : this(poolNamePrefix, Thread.currentThread().threadGroup, isDaemon, {}) + constructor(poolNamePrefix: String, group: ThreadGroup, isDaemon: Boolean) : this(poolNamePrefix, group, Thread.NORM_PRIORITY, isDaemon, {}) + constructor(poolNamePrefix: String, group: ThreadGroup, threadPriority: Int, isDaemon: Boolean) : this(poolNamePrefix, group, threadPriority, isDaemon, {}) + constructor(poolNamePrefix: String, group: ThreadGroup, isDaemon: Boolean, actionOnNewThread: (Thread) -> Unit) : this(poolNamePrefix, group, Thread.NORM_PRIORITY, isDaemon, actionOnNewThread) + + companion object { + /** + * Gets the version number. + */ + val version = DnsClient.version + } + + + + private val poolId = AtomicInteger() + + init { + require(threadPriority >= Thread.MIN_PRIORITY) { + String.format( + "Thread priority (%s) must be >= %s", threadPriority, Thread.MIN_PRIORITY + ) + } + require(threadPriority <= Thread.MAX_PRIORITY) { + String.format( + "Thread priority (%s) must be <= %s", threadPriority, Thread.MAX_PRIORITY + ) + } + } + + override fun newThread(r: Runnable): Thread { + // stack size is arbitrary based on JVM implementation. Default is 0 + // 8k is the size of the android stack. Depending on the version of android, this can either change, or will always be 8k + // To be honest, 8k is pretty reasonable for an asynchronous/event based system (32bit) or 16k (64bit) + // Setting the size MAY or MAY NOT have any effect!!! + val t = Thread(group, r, namePrefix + '-' + poolId.incrementAndGet()) + t.isDaemon = daemon + t.priority = threadPriority + + actionOnNewThread(t) + return t + } +} diff --git a/src9/module-info.java b/src9/module-info.java index b8055a8..3919527 100644 --- a/src9/module-info.java +++ b/src9/module-info.java @@ -5,7 +5,6 @@ module dorkbox.dns { exports dorkbox.dns.dns.records; requires dorkbox.netutil; - requires dorkbox.utilities; requires dorkbox.collections; requires dorkbox.updates; requires dorkbox.os;