Merge pull request #61 from mipt-npm/dev
0.4.0-dev-2
This commit is contained in:
commit
e13e3ab6bf
33
.github/workflows/build.yml
vendored
33
.github/workflows/build.yml
vendored
@ -4,16 +4,33 @@ on: [ push ]
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
strategy:
|
||||||
runs-on: ubuntu-latest
|
matrix:
|
||||||
|
os: [ macOS-latest, windows-latest ]
|
||||||
|
runs-on: ${{matrix.os}}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- name: Checkout the repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
- name: Set up JDK 11
|
- name: Set up JDK 11
|
||||||
uses: actions/setup-java@v1
|
uses: actions/setup-java@v1
|
||||||
with:
|
with:
|
||||||
java-version: 11
|
java-version: 11
|
||||||
- name: Grant execute permission for gradlew
|
- name: Add msys to path
|
||||||
run: chmod +x gradlew
|
if: matrix.os == 'windows-latest'
|
||||||
- name: Build with Gradle
|
run: SETX PATH "%PATH%;C:\msys64\mingw64\bin"
|
||||||
run: ./gradlew build
|
- name: Cache gradle
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/.gradle/caches
|
||||||
|
key: ${{ runner.os }}-gradle-${{ hashFiles('*.gradle.kts') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-gradle-
|
||||||
|
- name: Cache konan
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/.konan
|
||||||
|
key: ${{ runner.os }}-gradle-${{ hashFiles('*.gradle.kts') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-gradle-
|
||||||
|
- name: Build
|
||||||
|
run: ./gradlew build --no-daemon --stacktrace
|
||||||
|
71
.github/workflows/publish.yml
vendored
71
.github/workflows/publish.yml
vendored
@ -1,40 +1,57 @@
|
|||||||
name: Bintray Publish
|
name: Gradle publish
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
release:
|
release:
|
||||||
types:
|
types:
|
||||||
- created
|
- created
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-on-windows:
|
publish:
|
||||||
runs-on: windows-latest
|
environment:
|
||||||
|
name: publish
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macOS-latest, windows-latest]
|
||||||
|
runs-on: ${{matrix.os}}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- name: Checkout the repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
- name: Set up JDK 11
|
- name: Set up JDK 11
|
||||||
uses: actions/setup-java@v1
|
uses: actions/setup-java@v1
|
||||||
with:
|
with:
|
||||||
java-version: 11
|
java-version: 11
|
||||||
- name: Grant execute permission for gradlew
|
- name: Add msys to path
|
||||||
run: chmod +x gradlew
|
if: matrix.os == 'windows-latest'
|
||||||
- name: Gradle clean
|
run: SETX PATH "%PATH%;C:\msys64\mingw64\bin"
|
||||||
run: ./gradlew clean
|
- name: Cache gradle
|
||||||
- name: Gradle build
|
uses: actions/cache@v2
|
||||||
run: ./gradlew build
|
|
||||||
- name: Run release task
|
|
||||||
run: ./gradlew release -PbintrayUser=${{ secrets.BINTRAY_USER }} -PbintrayApiKey=${{ secrets.BINTRAY_KEY }}
|
|
||||||
build-on-macos:
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: Set up JDK 11
|
|
||||||
uses: actions/setup-java@v1
|
|
||||||
with:
|
with:
|
||||||
java-version: 11
|
path: ~/.gradle/caches
|
||||||
- name: Grant execute permission for gradlew
|
key: ${{ runner.os }}-gradle-${{ hashFiles('*.gradle.kts') }}
|
||||||
run: chmod +x gradlew
|
restore-keys: |
|
||||||
- name: Gradle clean
|
${{ runner.os }}-gradle-
|
||||||
run: ./gradlew clean
|
- name: Cache konan
|
||||||
- name: Gradle build
|
uses: actions/cache@v2
|
||||||
run: ./gradlew build
|
with:
|
||||||
- name: Run release task
|
path: ~/.konan
|
||||||
run: ./gradlew release -PbintrayUser=${{ secrets.BINTRAY_USER }} -PbintrayApiKey=${{ secrets.BINTRAY_KEY }}
|
key: ${{ runner.os }}-gradle-${{ hashFiles('*.gradle.kts') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-gradle-
|
||||||
|
- name: Publish Windows Artifacts
|
||||||
|
if: matrix.os == 'windows-latest'
|
||||||
|
run: >
|
||||||
|
./gradlew release --no-daemon
|
||||||
|
-Ppublishing.github.user=${{ secrets.PUBLISHING_GITHUB_USER }}
|
||||||
|
-Ppublishing.github.token=${{ secrets.PUBLISHING_GITHUB_TOKEN }}
|
||||||
|
-Ppublishing.space.user=${{ secrets.PUBLISHING_SPACE_USER }}
|
||||||
|
-Ppublishing.space.token=${{ secrets.PUBLISHING_SPACE_TOKEN }}
|
||||||
|
- name: Publish Mac Artifacts
|
||||||
|
if: matrix.os == 'macOS-latest'
|
||||||
|
run: >
|
||||||
|
./gradlew release --no-daemon
|
||||||
|
-Ppublication.platform=macosX64
|
||||||
|
-Ppublishing.github.user=${{ secrets.PUBLISHING_GITHUB_USER }}
|
||||||
|
-Ppublishing.github.token=${{ secrets.PUBLISHING_GITHUB_TOKEN }}
|
||||||
|
-Ppublishing.space.user=${{ secrets.PUBLISHING_SPACE_USER }}
|
||||||
|
-Ppublishing.space.token=${{ secrets.PUBLISHING_SPACE_TOKEN }}
|
||||||
|
@ -2,12 +2,18 @@
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
### Added
|
### Added
|
||||||
|
- LogManager plugin
|
||||||
|
- dataforge-context API dependency on SLF4j
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
- Kotlin-logging moved from common to JVM and JS. Replaced by console for native.
|
||||||
|
- Package changed to `space.kscience`
|
||||||
|
|
||||||
### Deprecated
|
### Deprecated
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
- Common dependency on Kotlin-logging
|
||||||
|
- Kotlinx-io fork dependency. Replaced by Ktor-io.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
![Gradle build](https://github.com/mipt-npm/dataforge-core/workflows/Gradle%20build/badge.svg)
|
![Gradle build](https://github.com/mipt-npm/dataforge-core/workflows/Gradle%20build/badge.svg)
|
||||||
|
|
||||||
[ ![Download](https://api.bintray.com/packages/mipt-npm/dataforge/dataforge-meta/images/download.svg) ](https://bintray.com/mipt-npm/dataforge/dataforge-meta/_latestVersion)
|
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
* ### [dataforge-context](dataforge-context)
|
* ### [dataforge-context](dataforge-context)
|
||||||
@ -49,7 +47,7 @@
|
|||||||
> **Maturity**: EXPERIMENTAL
|
> **Maturity**: EXPERIMENTAL
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
* ### [dataforge-io-yaml](dataforge-io-yaml)
|
* ### [dataforge-io-yaml](dataforge-io/dataforge-io-yaml)
|
||||||
> YAML meta converters and Front Matter envelope format
|
> YAML meta converters and Front Matter envelope format
|
||||||
>
|
>
|
||||||
> **Maturity**: PROTOTYPE
|
> **Maturity**: PROTOTYPE
|
||||||
|
@ -1,20 +1,18 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("ru.mipt.npm.project")
|
id("ru.mipt.npm.gradle.project")
|
||||||
}
|
}
|
||||||
|
|
||||||
val dataforgeVersion by extra("0.3.0")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
group = "hep.dataforge"
|
group = "space.kscience"
|
||||||
version = dataforgeVersion
|
version = "0.4.0-dev-2"
|
||||||
|
|
||||||
apply<org.jetbrains.dokka.gradle.DokkaPlugin>()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
apply(plugin = "ru.mipt.npm.publish")
|
apply(plugin = "maven-publish")
|
||||||
|
repositories {
|
||||||
|
maven("https://dl.bintray.com/mipt-npm/kscience")
|
||||||
|
maven("https://dl.bintray.com/mipt-npm/dev")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
readme {
|
readme {
|
||||||
@ -22,7 +20,11 @@ readme {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ksciencePublish {
|
ksciencePublish {
|
||||||
bintrayRepo = "dataforge"
|
github("dataforge-core")
|
||||||
githubProject = "dataforge-core"
|
space("https://maven.pkg.jetbrains.space/mipt-npm/p/sci/maven")
|
||||||
spaceRepo = "https://maven.jetbrains.space/mipt-npm/p/df/maven"
|
sonatype()
|
||||||
|
}
|
||||||
|
|
||||||
|
apiValidation {
|
||||||
|
nonPublicMarkers.add("space.kscience.dataforge.misc.DFExperimental")
|
||||||
}
|
}
|
@ -1,42 +1,42 @@
|
|||||||
public abstract class hep/dataforge/context/AbstractPlugin : hep/dataforge/context/Plugin {
|
public abstract class space/kscience/dataforge/context/AbstractPlugin : space/kscience/dataforge/context/Plugin {
|
||||||
public fun <init> ()V
|
public fun <init> ()V
|
||||||
public fun <init> (Lhep/dataforge/meta/Meta;)V
|
public fun <init> (Lspace/kscience/dataforge/meta/Meta;)V
|
||||||
public synthetic fun <init> (Lhep/dataforge/meta/Meta;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
public synthetic fun <init> (Lspace/kscience/dataforge/meta/Meta;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||||
public fun attach (Lhep/dataforge/context/Context;)V
|
public fun attach (Lspace/kscience/dataforge/context/Context;)V
|
||||||
public fun content (Ljava/lang/String;)Ljava/util/Map;
|
public fun content (Ljava/lang/String;)Ljava/util/Map;
|
||||||
public final fun dependsOn ()Ljava/util/Map;
|
public final fun dependsOn ()Ljava/util/Map;
|
||||||
public fun detach ()V
|
public fun detach ()V
|
||||||
public fun getContext ()Lhep/dataforge/context/Context;
|
public fun getContext ()Lspace/kscience/dataforge/context/Context;
|
||||||
public fun getDefaultChainTarget ()Ljava/lang/String;
|
public fun getDefaultChainTarget ()Ljava/lang/String;
|
||||||
public fun getDefaultTarget ()Ljava/lang/String;
|
public fun getDefaultTarget ()Ljava/lang/String;
|
||||||
public fun getMeta ()Lhep/dataforge/meta/Meta;
|
public fun getMeta ()Lspace/kscience/dataforge/meta/Meta;
|
||||||
public fun getName ()Lhep/dataforge/names/Name;
|
public fun getName ()Lspace/kscience/dataforge/names/Name;
|
||||||
protected final fun require (Lhep/dataforge/context/PluginFactory;Lhep/dataforge/meta/Meta;)Lkotlin/properties/ReadOnlyProperty;
|
protected final fun require (Lspace/kscience/dataforge/context/PluginFactory;Lspace/kscience/dataforge/meta/Meta;)Lkotlin/properties/ReadOnlyProperty;
|
||||||
public static synthetic fun require$default (Lhep/dataforge/context/AbstractPlugin;Lhep/dataforge/context/PluginFactory;Lhep/dataforge/meta/Meta;ILjava/lang/Object;)Lkotlin/properties/ReadOnlyProperty;
|
public static synthetic fun require$default (Lspace/kscience/dataforge/context/AbstractPlugin;Lspace/kscience/dataforge/context/PluginFactory;Lspace/kscience/dataforge/meta/Meta;ILjava/lang/Object;)Lkotlin/properties/ReadOnlyProperty;
|
||||||
public fun toMeta ()Lhep/dataforge/meta/Meta;
|
public fun toMeta ()Lspace/kscience/dataforge/meta/Meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/AbstractPluginKt {
|
public final class space/kscience/dataforge/context/AbstractPluginKt {
|
||||||
public static final fun toMap (Ljava/util/Collection;)Ljava/util/Map;
|
public static final fun toMap (Ljava/util/Collection;)Ljava/util/Map;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/ClassLoaderPlugin : hep/dataforge/context/AbstractPlugin {
|
public final class space/kscience/dataforge/context/ClassLoaderPlugin : space/kscience/dataforge/context/AbstractPlugin {
|
||||||
public static final field Companion Lhep/dataforge/context/ClassLoaderPlugin$Companion;
|
public static final field Companion Lspace/kscience/dataforge/context/ClassLoaderPlugin$Companion;
|
||||||
public fun <init> (Ljava/lang/ClassLoader;)V
|
public fun <init> (Ljava/lang/ClassLoader;)V
|
||||||
public fun getTag ()Lhep/dataforge/context/PluginTag;
|
public fun getTag ()Lspace/kscience/dataforge/context/PluginTag;
|
||||||
public final fun services (Lkotlin/reflect/KClass;)Lkotlin/sequences/Sequence;
|
public final fun services (Lkotlin/reflect/KClass;)Lkotlin/sequences/Sequence;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/ClassLoaderPlugin$Companion {
|
public final class space/kscience/dataforge/context/ClassLoaderPlugin$Companion {
|
||||||
public final fun getDEFAULT ()Lhep/dataforge/context/ClassLoaderPlugin;
|
public final fun getDEFAULT ()Lspace/kscience/dataforge/context/ClassLoaderPlugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/ClassLoaderPluginKt {
|
public final class space/kscience/dataforge/context/ClassLoaderPluginKt {
|
||||||
public static final fun getClassLoaderPlugin (Lhep/dataforge/context/Context;)Lhep/dataforge/context/ClassLoaderPlugin;
|
public static final fun getClassLoaderPlugin (Lspace/kscience/dataforge/context/Context;)Lspace/kscience/dataforge/context/ClassLoaderPlugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class hep/dataforge/context/Context : hep/dataforge/meta/MetaRepr, hep/dataforge/misc/Named, hep/dataforge/provider/Provider, kotlinx/coroutines/CoroutineScope {
|
public class space/kscience/dataforge/context/Context : kotlinx/coroutines/CoroutineScope, space/kscience/dataforge/meta/MetaRepr, space/kscience/dataforge/misc/Named, space/kscience/dataforge/provider/Provider {
|
||||||
public static final field Companion Lhep/dataforge/context/Context$Companion;
|
public static final field Companion Lspace/kscience/dataforge/context/Context$Companion;
|
||||||
public static final field PROPERTY_TARGET Ljava/lang/String;
|
public static final field PROPERTY_TARGET Ljava/lang/String;
|
||||||
public fun close ()V
|
public fun close ()V
|
||||||
public fun content (Ljava/lang/String;)Ljava/util/Map;
|
public fun content (Ljava/lang/String;)Ljava/util/Map;
|
||||||
@ -44,211 +44,245 @@ public class hep/dataforge/context/Context : hep/dataforge/meta/MetaRepr, hep/da
|
|||||||
public fun getCoroutineContext ()Lkotlin/coroutines/CoroutineContext;
|
public fun getCoroutineContext ()Lkotlin/coroutines/CoroutineContext;
|
||||||
public fun getDefaultChainTarget ()Ljava/lang/String;
|
public fun getDefaultChainTarget ()Ljava/lang/String;
|
||||||
public fun getDefaultTarget ()Ljava/lang/String;
|
public fun getDefaultTarget ()Ljava/lang/String;
|
||||||
public final fun getName ()Lhep/dataforge/names/Name;
|
public final fun getName ()Lspace/kscience/dataforge/names/Name;
|
||||||
public final fun getParent ()Lhep/dataforge/context/Context;
|
public final fun getParent ()Lspace/kscience/dataforge/context/Context;
|
||||||
public final fun getPlugins ()Lhep/dataforge/context/PluginManager;
|
public final fun getPlugins ()Lspace/kscience/dataforge/context/PluginManager;
|
||||||
public fun toMeta ()Lhep/dataforge/meta/Meta;
|
public fun toMeta ()Lspace/kscience/dataforge/meta/Meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/Context$Companion {
|
public final class space/kscience/dataforge/context/Context$Companion {
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class hep/dataforge/context/ContextAware {
|
public abstract interface class space/kscience/dataforge/context/ContextAware {
|
||||||
public abstract fun getContext ()Lhep/dataforge/context/Context;
|
public abstract fun getContext ()Lspace/kscience/dataforge/context/Context;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/ContextBuilder {
|
public final class space/kscience/dataforge/context/ContextBuilder {
|
||||||
public fun <init> ()V
|
public fun <init> ()V
|
||||||
public fun <init> (Lhep/dataforge/context/Context;Ljava/lang/String;)V
|
public fun <init> (Lspace/kscience/dataforge/context/Context;Ljava/lang/String;)V
|
||||||
public synthetic fun <init> (Lhep/dataforge/context/Context;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
public synthetic fun <init> (Lspace/kscience/dataforge/context/Context;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||||
public final fun build ()Lhep/dataforge/context/Context;
|
public final fun build ()Lspace/kscience/dataforge/context/Context;
|
||||||
public final fun getName ()Ljava/lang/String;
|
public final fun getName ()Ljava/lang/String;
|
||||||
public final fun plugin (Lhep/dataforge/context/PluginFactory;Lkotlin/jvm/functions/Function1;)V
|
|
||||||
public final fun plugin (Lhep/dataforge/context/PluginTag;Lkotlin/jvm/functions/Function1;)V
|
|
||||||
public final fun plugin (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
|
public final fun plugin (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
|
||||||
public static synthetic fun plugin$default (Lhep/dataforge/context/ContextBuilder;Lhep/dataforge/context/PluginFactory;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
|
public final fun plugin (Lspace/kscience/dataforge/context/PluginFactory;Lkotlin/jvm/functions/Function1;)V
|
||||||
public static synthetic fun plugin$default (Lhep/dataforge/context/ContextBuilder;Lhep/dataforge/context/PluginTag;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
|
public final fun plugin (Lspace/kscience/dataforge/context/PluginTag;Lkotlin/jvm/functions/Function1;)V
|
||||||
public static synthetic fun plugin$default (Lhep/dataforge/context/ContextBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
|
public static synthetic fun plugin$default (Lspace/kscience/dataforge/context/ContextBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
|
||||||
|
public static synthetic fun plugin$default (Lspace/kscience/dataforge/context/ContextBuilder;Lspace/kscience/dataforge/context/PluginFactory;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
|
||||||
|
public static synthetic fun plugin$default (Lspace/kscience/dataforge/context/ContextBuilder;Lspace/kscience/dataforge/context/PluginTag;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
|
||||||
public final fun properties (Lkotlin/jvm/functions/Function1;)V
|
public final fun properties (Lkotlin/jvm/functions/Function1;)V
|
||||||
public final fun setName (Ljava/lang/String;)V
|
public final fun setName (Ljava/lang/String;)V
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/ContextKt {
|
public final class space/kscience/dataforge/context/ContextKt {
|
||||||
public static final fun Context (Ljava/lang/String;Lhep/dataforge/context/Context;Lkotlin/jvm/functions/Function1;)Lhep/dataforge/context/Context;
|
public static final fun Context (Ljava/lang/String;Lspace/kscience/dataforge/context/Context;Lkotlin/jvm/functions/Function1;)Lspace/kscience/dataforge/context/Context;
|
||||||
public static synthetic fun Context$default (Ljava/lang/String;Lhep/dataforge/context/Context;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lhep/dataforge/context/Context;
|
public static synthetic fun Context$default (Ljava/lang/String;Lspace/kscience/dataforge/context/Context;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lspace/kscience/dataforge/context/Context;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class hep/dataforge/context/Factory {
|
public abstract interface class space/kscience/dataforge/context/Factory {
|
||||||
public abstract fun invoke (Lhep/dataforge/meta/Meta;Lhep/dataforge/context/Context;)Ljava/lang/Object;
|
public abstract fun invoke (Lspace/kscience/dataforge/meta/Meta;Lspace/kscience/dataforge/context/Context;)Ljava/lang/Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/Factory$DefaultImpls {
|
public final class space/kscience/dataforge/context/Factory$DefaultImpls {
|
||||||
public static synthetic fun invoke$default (Lhep/dataforge/context/Factory;Lhep/dataforge/meta/Meta;Lhep/dataforge/context/Context;ILjava/lang/Object;)Ljava/lang/Object;
|
public static synthetic fun invoke$default (Lspace/kscience/dataforge/context/Factory;Lspace/kscience/dataforge/meta/Meta;Lspace/kscience/dataforge/context/Context;ILjava/lang/Object;)Ljava/lang/Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/Global : hep/dataforge/context/Context {
|
public final class space/kscience/dataforge/context/Global : space/kscience/dataforge/context/Context {
|
||||||
public static final field INSTANCE Lhep/dataforge/context/Global;
|
public static final field INSTANCE Lspace/kscience/dataforge/context/Global;
|
||||||
public fun close ()V
|
public fun close ()V
|
||||||
public final fun context (Ljava/lang/String;Lhep/dataforge/context/Context;Lkotlin/jvm/functions/Function1;)Lhep/dataforge/context/Context;
|
public final fun context (Ljava/lang/String;Lspace/kscience/dataforge/context/Context;Lkotlin/jvm/functions/Function1;)Lspace/kscience/dataforge/context/Context;
|
||||||
public static synthetic fun context$default (Lhep/dataforge/context/Global;Ljava/lang/String;Lhep/dataforge/context/Context;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lhep/dataforge/context/Context;
|
public static synthetic fun context$default (Lspace/kscience/dataforge/context/Global;Ljava/lang/String;Lspace/kscience/dataforge/context/Context;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lspace/kscience/dataforge/context/Context;
|
||||||
public final fun getContext (Ljava/lang/String;)Lhep/dataforge/context/Context;
|
public final fun getContext (Ljava/lang/String;)Lspace/kscience/dataforge/context/Context;
|
||||||
public fun getCoroutineContext ()Lkotlin/coroutines/CoroutineContext;
|
public fun getCoroutineContext ()Lkotlin/coroutines/CoroutineContext;
|
||||||
|
public final fun getLogger ()Lspace/kscience/dataforge/context/LogManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/LoggingKt {
|
public abstract interface class space/kscience/dataforge/context/LogManager : space/kscience/dataforge/context/Logable, space/kscience/dataforge/context/Plugin {
|
||||||
public static final fun getLogger (Lhep/dataforge/context/Context;)Lmu/KLogger;
|
public static final field Companion Lspace/kscience/dataforge/context/LogManager$Companion;
|
||||||
public static final fun getLogger (Lhep/dataforge/context/ContextAware;)Lmu/KLogger;
|
public static final field DEBUG Ljava/lang/String;
|
||||||
|
public static final field ERROR Ljava/lang/String;
|
||||||
|
public static final field INFO Ljava/lang/String;
|
||||||
|
public static final field TRACE Ljava/lang/String;
|
||||||
|
public static final field WARNING Ljava/lang/String;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class hep/dataforge/context/Plugin : hep/dataforge/context/ContextAware, hep/dataforge/meta/MetaRepr, hep/dataforge/misc/Named, hep/dataforge/provider/Provider {
|
public final class space/kscience/dataforge/context/LogManager$Companion {
|
||||||
public static final field Companion Lhep/dataforge/context/Plugin$Companion;
|
public static final field DEBUG Ljava/lang/String;
|
||||||
|
public static final field ERROR Ljava/lang/String;
|
||||||
|
public static final field INFO Ljava/lang/String;
|
||||||
|
public static final field TRACE Ljava/lang/String;
|
||||||
|
public static final field WARNING Ljava/lang/String;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/dataforge/context/LogManager$DefaultImpls {
|
||||||
|
public static fun content (Lspace/kscience/dataforge/context/LogManager;Ljava/lang/String;)Ljava/util/Map;
|
||||||
|
public static fun getDefaultChainTarget (Lspace/kscience/dataforge/context/LogManager;)Ljava/lang/String;
|
||||||
|
public static fun getDefaultTarget (Lspace/kscience/dataforge/context/LogManager;)Ljava/lang/String;
|
||||||
|
public static fun getName (Lspace/kscience/dataforge/context/LogManager;)Lspace/kscience/dataforge/names/Name;
|
||||||
|
public static fun toMeta (Lspace/kscience/dataforge/context/LogManager;)Lspace/kscience/dataforge/meta/Meta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/dataforge/context/LogManagerKt {
|
||||||
|
public static final fun debug (Lspace/kscience/dataforge/context/Logable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;)V
|
||||||
|
public static synthetic fun debug$default (Lspace/kscience/dataforge/context/Logable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
|
||||||
|
public static final fun error (Lspace/kscience/dataforge/context/Logable;Ljava/lang/Throwable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;)V
|
||||||
|
public static final fun error (Lspace/kscience/dataforge/context/Logable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;)V
|
||||||
|
public static synthetic fun error$default (Lspace/kscience/dataforge/context/Logable;Ljava/lang/Throwable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
|
||||||
|
public static synthetic fun error$default (Lspace/kscience/dataforge/context/Logable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
|
||||||
|
public static final fun getLogger (Lspace/kscience/dataforge/context/Context;)Lspace/kscience/dataforge/context/LogManager;
|
||||||
|
public static final fun getLogger (Lspace/kscience/dataforge/context/ContextAware;)Lspace/kscience/dataforge/context/Logable;
|
||||||
|
public static final fun info (Lspace/kscience/dataforge/context/Logable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;)V
|
||||||
|
public static synthetic fun info$default (Lspace/kscience/dataforge/context/Logable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
|
||||||
|
public static final fun trace (Lspace/kscience/dataforge/context/Logable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;)V
|
||||||
|
public static synthetic fun trace$default (Lspace/kscience/dataforge/context/Logable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
|
||||||
|
public static final fun warn (Lspace/kscience/dataforge/context/Logable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;)V
|
||||||
|
public static synthetic fun warn$default (Lspace/kscience/dataforge/context/Logable;Lspace/kscience/dataforge/names/Name;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract interface class space/kscience/dataforge/context/Logable {
|
||||||
|
public abstract fun log (Lspace/kscience/dataforge/names/Name;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract interface class space/kscience/dataforge/context/Plugin : space/kscience/dataforge/context/ContextAware, space/kscience/dataforge/meta/MetaRepr, space/kscience/dataforge/misc/Named, space/kscience/dataforge/provider/Provider {
|
||||||
|
public static final field Companion Lspace/kscience/dataforge/context/Plugin$Companion;
|
||||||
public static final field TARGET Ljava/lang/String;
|
public static final field TARGET Ljava/lang/String;
|
||||||
public abstract fun attach (Lhep/dataforge/context/Context;)V
|
public abstract fun attach (Lspace/kscience/dataforge/context/Context;)V
|
||||||
public abstract fun dependsOn ()Ljava/util/Map;
|
public abstract fun dependsOn ()Ljava/util/Map;
|
||||||
public abstract fun detach ()V
|
public abstract fun detach ()V
|
||||||
public abstract fun getMeta ()Lhep/dataforge/meta/Meta;
|
public abstract fun getMeta ()Lspace/kscience/dataforge/meta/Meta;
|
||||||
public abstract fun getName ()Lhep/dataforge/names/Name;
|
public abstract fun getName ()Lspace/kscience/dataforge/names/Name;
|
||||||
public abstract fun getTag ()Lhep/dataforge/context/PluginTag;
|
public abstract fun getTag ()Lspace/kscience/dataforge/context/PluginTag;
|
||||||
public abstract fun toMeta ()Lhep/dataforge/meta/Meta;
|
public abstract fun toMeta ()Lspace/kscience/dataforge/meta/Meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/Plugin$Companion {
|
public final class space/kscience/dataforge/context/Plugin$Companion {
|
||||||
public static final field TARGET Ljava/lang/String;
|
public static final field TARGET Ljava/lang/String;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/Plugin$DefaultImpls {
|
public final class space/kscience/dataforge/context/Plugin$DefaultImpls {
|
||||||
public static fun content (Lhep/dataforge/context/Plugin;Ljava/lang/String;)Ljava/util/Map;
|
public static fun content (Lspace/kscience/dataforge/context/Plugin;Ljava/lang/String;)Ljava/util/Map;
|
||||||
public static fun getDefaultChainTarget (Lhep/dataforge/context/Plugin;)Ljava/lang/String;
|
public static fun getDefaultChainTarget (Lspace/kscience/dataforge/context/Plugin;)Ljava/lang/String;
|
||||||
public static fun getDefaultTarget (Lhep/dataforge/context/Plugin;)Ljava/lang/String;
|
public static fun getDefaultTarget (Lspace/kscience/dataforge/context/Plugin;)Ljava/lang/String;
|
||||||
public static fun getName (Lhep/dataforge/context/Plugin;)Lhep/dataforge/names/Name;
|
public static fun getName (Lspace/kscience/dataforge/context/Plugin;)Lspace/kscience/dataforge/names/Name;
|
||||||
public static fun toMeta (Lhep/dataforge/context/Plugin;)Lhep/dataforge/meta/Meta;
|
public static fun toMeta (Lspace/kscience/dataforge/context/Plugin;)Lspace/kscience/dataforge/meta/Meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class hep/dataforge/context/PluginFactory : hep/dataforge/context/Factory {
|
public abstract interface class space/kscience/dataforge/context/PluginFactory : space/kscience/dataforge/context/Factory {
|
||||||
public static final field Companion Lhep/dataforge/context/PluginFactory$Companion;
|
public static final field Companion Lspace/kscience/dataforge/context/PluginFactory$Companion;
|
||||||
public static final field TYPE Ljava/lang/String;
|
public static final field TYPE Ljava/lang/String;
|
||||||
public abstract fun getTag ()Lhep/dataforge/context/PluginTag;
|
public abstract fun getTag ()Lspace/kscience/dataforge/context/PluginTag;
|
||||||
public abstract fun getType ()Lkotlin/reflect/KClass;
|
public abstract fun getType ()Lkotlin/reflect/KClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/PluginFactory$Companion {
|
public final class space/kscience/dataforge/context/PluginFactory$Companion {
|
||||||
public static final field TYPE Ljava/lang/String;
|
public static final field TYPE Ljava/lang/String;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/PluginManager : hep/dataforge/context/ContextAware, java/lang/Iterable, kotlin/jvm/internal/markers/KMappedMarker {
|
public final class space/kscience/dataforge/context/PluginManager : java/lang/Iterable, kotlin/jvm/internal/markers/KMappedMarker, space/kscience/dataforge/context/ContextAware {
|
||||||
public fun <init> (Lhep/dataforge/context/Context;)V
|
public fun <init> (Lspace/kscience/dataforge/context/Context;)V
|
||||||
public final fun fetch (Lhep/dataforge/context/PluginFactory;Lhep/dataforge/meta/Meta;Z)Lhep/dataforge/context/Plugin;
|
public final fun fetch (Lspace/kscience/dataforge/context/PluginFactory;Lspace/kscience/dataforge/meta/Meta;Z)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public final fun fetch (Lhep/dataforge/context/PluginFactory;ZLkotlin/jvm/functions/Function1;)Lhep/dataforge/context/Plugin;
|
public final fun fetch (Lspace/kscience/dataforge/context/PluginFactory;ZLkotlin/jvm/functions/Function1;)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public static synthetic fun fetch$default (Lhep/dataforge/context/PluginManager;Lhep/dataforge/context/PluginFactory;Lhep/dataforge/meta/Meta;ZILjava/lang/Object;)Lhep/dataforge/context/Plugin;
|
public static synthetic fun fetch$default (Lspace/kscience/dataforge/context/PluginManager;Lspace/kscience/dataforge/context/PluginFactory;Lspace/kscience/dataforge/meta/Meta;ZILjava/lang/Object;)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public static synthetic fun fetch$default (Lhep/dataforge/context/PluginManager;Lhep/dataforge/context/PluginFactory;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lhep/dataforge/context/Plugin;
|
public static synthetic fun fetch$default (Lspace/kscience/dataforge/context/PluginManager;Lspace/kscience/dataforge/context/PluginFactory;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public final fun find (ZLkotlin/jvm/functions/Function1;)Lhep/dataforge/context/Plugin;
|
public final fun find (ZLkotlin/jvm/functions/Function1;)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public static synthetic fun find$default (Lhep/dataforge/context/PluginManager;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lhep/dataforge/context/Plugin;
|
public static synthetic fun find$default (Lspace/kscience/dataforge/context/PluginManager;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public final fun get (Lhep/dataforge/context/PluginTag;Z)Lhep/dataforge/context/Plugin;
|
public final fun get (Lkotlin/reflect/KClass;Lspace/kscience/dataforge/context/PluginTag;Z)Ljava/lang/Object;
|
||||||
public final fun get (Lkotlin/reflect/KClass;Lhep/dataforge/context/PluginTag;Z)Ljava/lang/Object;
|
public final fun get (Lspace/kscience/dataforge/context/PluginTag;Z)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public static synthetic fun get$default (Lhep/dataforge/context/PluginManager;Lhep/dataforge/context/PluginTag;ZILjava/lang/Object;)Lhep/dataforge/context/Plugin;
|
public static synthetic fun get$default (Lspace/kscience/dataforge/context/PluginManager;Lkotlin/reflect/KClass;Lspace/kscience/dataforge/context/PluginTag;ZILjava/lang/Object;)Ljava/lang/Object;
|
||||||
public static synthetic fun get$default (Lhep/dataforge/context/PluginManager;Lkotlin/reflect/KClass;Lhep/dataforge/context/PluginTag;ZILjava/lang/Object;)Ljava/lang/Object;
|
public static synthetic fun get$default (Lspace/kscience/dataforge/context/PluginManager;Lspace/kscience/dataforge/context/PluginTag;ZILjava/lang/Object;)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public fun getContext ()Lhep/dataforge/context/Context;
|
public fun getContext ()Lspace/kscience/dataforge/context/Context;
|
||||||
public fun iterator ()Ljava/util/Iterator;
|
public fun iterator ()Ljava/util/Iterator;
|
||||||
public final fun list (Z)Ljava/util/Collection;
|
public final fun list (Z)Ljava/util/Collection;
|
||||||
public final fun load (Lhep/dataforge/context/Plugin;)Lhep/dataforge/context/Plugin;
|
public final fun load (Lspace/kscience/dataforge/context/Plugin;)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public final fun load (Lhep/dataforge/context/PluginFactory;Lhep/dataforge/meta/Meta;)Lhep/dataforge/context/Plugin;
|
public final fun load (Lspace/kscience/dataforge/context/PluginFactory;Lkotlin/jvm/functions/Function1;)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public final fun load (Lhep/dataforge/context/PluginFactory;Lkotlin/jvm/functions/Function1;)Lhep/dataforge/context/Plugin;
|
public final fun load (Lspace/kscience/dataforge/context/PluginFactory;Lspace/kscience/dataforge/meta/Meta;)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public static synthetic fun load$default (Lhep/dataforge/context/PluginManager;Lhep/dataforge/context/PluginFactory;Lhep/dataforge/meta/Meta;ILjava/lang/Object;)Lhep/dataforge/context/Plugin;
|
public static synthetic fun load$default (Lspace/kscience/dataforge/context/PluginManager;Lspace/kscience/dataforge/context/PluginFactory;Lspace/kscience/dataforge/meta/Meta;ILjava/lang/Object;)Lspace/kscience/dataforge/context/Plugin;
|
||||||
public final fun remove (Lhep/dataforge/context/Plugin;)V
|
public final fun remove (Lspace/kscience/dataforge/context/Plugin;)V
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/PluginTag : hep/dataforge/meta/MetaRepr {
|
public final class space/kscience/dataforge/context/PluginTag : space/kscience/dataforge/meta/MetaRepr {
|
||||||
public static final field Companion Lhep/dataforge/context/PluginTag$Companion;
|
public static final field Companion Lspace/kscience/dataforge/context/PluginTag$Companion;
|
||||||
public static final field DATAFORGE_GROUP Ljava/lang/String;
|
public static final field DATAFORGE_GROUP Ljava/lang/String;
|
||||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
||||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||||
public final fun component1 ()Ljava/lang/String;
|
public final fun component1 ()Ljava/lang/String;
|
||||||
public final fun component2 ()Ljava/lang/String;
|
public final fun component2 ()Ljava/lang/String;
|
||||||
public final fun component3 ()Ljava/lang/String;
|
public final fun component3 ()Ljava/lang/String;
|
||||||
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lhep/dataforge/context/PluginTag;
|
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lspace/kscience/dataforge/context/PluginTag;
|
||||||
public static synthetic fun copy$default (Lhep/dataforge/context/PluginTag;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lhep/dataforge/context/PluginTag;
|
public static synthetic fun copy$default (Lspace/kscience/dataforge/context/PluginTag;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lspace/kscience/dataforge/context/PluginTag;
|
||||||
public fun equals (Ljava/lang/Object;)Z
|
public fun equals (Ljava/lang/Object;)Z
|
||||||
public final fun getGroup ()Ljava/lang/String;
|
public final fun getGroup ()Ljava/lang/String;
|
||||||
public final fun getName ()Ljava/lang/String;
|
public final fun getName ()Ljava/lang/String;
|
||||||
public final fun getVersion ()Ljava/lang/String;
|
public final fun getVersion ()Ljava/lang/String;
|
||||||
public fun hashCode ()I
|
public fun hashCode ()I
|
||||||
public final fun matches (Lhep/dataforge/context/PluginTag;)Z
|
public final fun matches (Lspace/kscience/dataforge/context/PluginTag;)Z
|
||||||
public fun toMeta ()Lhep/dataforge/meta/Meta;
|
public fun toMeta ()Lspace/kscience/dataforge/meta/Meta;
|
||||||
public fun toString ()Ljava/lang/String;
|
public fun toString ()Ljava/lang/String;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/PluginTag$Companion {
|
public final class space/kscience/dataforge/context/PluginTag$Companion {
|
||||||
public final fun fromString (Ljava/lang/String;)Lhep/dataforge/context/PluginTag;
|
public final fun fromString (Ljava/lang/String;)Lspace/kscience/dataforge/context/PluginTag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/context/ResolveKt {
|
public final class space/kscience/dataforge/context/ResolveKt {
|
||||||
public static final fun gather (Lhep/dataforge/context/Context;Ljava/lang/String;Lkotlin/reflect/KClass;Z)Ljava/util/Map;
|
public static final fun gather (Lspace/kscience/dataforge/context/Context;Ljava/lang/String;Lkotlin/reflect/KClass;Z)Ljava/util/Map;
|
||||||
public static synthetic fun gather$default (Lhep/dataforge/context/Context;Ljava/lang/String;Lkotlin/reflect/KClass;ZILjava/lang/Object;)Ljava/util/Map;
|
public static synthetic fun gather$default (Lspace/kscience/dataforge/context/Context;Ljava/lang/String;Lkotlin/reflect/KClass;ZILjava/lang/Object;)Ljava/util/Map;
|
||||||
public static final fun gatherInSequence (Lhep/dataforge/context/Context;Ljava/lang/String;Lkotlin/reflect/KClass;Z)Lkotlin/sequences/Sequence;
|
public static synthetic fun gatherInSequence$default (Lspace/kscience/dataforge/context/Context;Ljava/lang/String;Lkotlin/reflect/KClass;ZILjava/lang/Object;)Lkotlin/sequences/Sequence;
|
||||||
public static synthetic fun gatherInSequence$default (Lhep/dataforge/context/Context;Ljava/lang/String;Lkotlin/reflect/KClass;ZILjava/lang/Object;)Lkotlin/sequences/Sequence;
|
|
||||||
public static final fun getValues (Lkotlin/sequences/Sequence;)Lkotlin/sequences/Sequence;
|
public static final fun getValues (Lkotlin/sequences/Sequence;)Lkotlin/sequences/Sequence;
|
||||||
public static final fun resolve (Lhep/dataforge/context/Context;Ljava/lang/String;Lhep/dataforge/names/Name;Lkotlin/reflect/KClass;)Ljava/lang/Object;
|
public static final fun resolve (Lspace/kscience/dataforge/context/Context;Ljava/lang/String;Lspace/kscience/dataforge/names/Name;Lkotlin/reflect/KClass;)Ljava/lang/Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface annotation class hep/dataforge/descriptors/Attribute : java/lang/annotation/Annotation {
|
public final class space/kscience/dataforge/context/SlfLogManager : space/kscience/dataforge/context/AbstractPlugin, space/kscience/dataforge/context/LogManager {
|
||||||
|
public static final field Companion Lspace/kscience/dataforge/context/SlfLogManager$Companion;
|
||||||
|
public fun <init> ()V
|
||||||
|
public fun getTag ()Lspace/kscience/dataforge/context/PluginTag;
|
||||||
|
public fun log (Lspace/kscience/dataforge/names/Name;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class space/kscience/dataforge/context/SlfLogManager$Companion : space/kscience/dataforge/context/PluginFactory {
|
||||||
|
public fun getTag ()Lspace/kscience/dataforge/context/PluginTag;
|
||||||
|
public fun getType ()Lkotlin/reflect/KClass;
|
||||||
|
public synthetic fun invoke (Lspace/kscience/dataforge/meta/Meta;Lspace/kscience/dataforge/context/Context;)Ljava/lang/Object;
|
||||||
|
public fun invoke (Lspace/kscience/dataforge/meta/Meta;Lspace/kscience/dataforge/context/Context;)Lspace/kscience/dataforge/context/SlfLogManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract interface annotation class space/kscience/dataforge/descriptors/Attribute : java/lang/annotation/Annotation {
|
||||||
public abstract fun key ()Ljava/lang/String;
|
public abstract fun key ()Ljava/lang/String;
|
||||||
public abstract fun value ()Ljava/lang/String;
|
public abstract fun value ()Ljava/lang/String;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface annotation class hep/dataforge/descriptors/Attributes : java/lang/annotation/Annotation {
|
public abstract interface annotation class space/kscience/dataforge/descriptors/Attributes : java/lang/annotation/Annotation {
|
||||||
public abstract fun attrs ()[Lhep/dataforge/descriptors/Attribute;
|
public abstract fun attrs ()[Lspace/kscience/dataforge/descriptors/Attribute;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface annotation class hep/dataforge/descriptors/ItemDef : java/lang/annotation/Annotation {
|
public abstract interface annotation class space/kscience/dataforge/descriptors/ItemDef : java/lang/annotation/Annotation {
|
||||||
public abstract fun info ()Ljava/lang/String;
|
public abstract fun info ()Ljava/lang/String;
|
||||||
public abstract fun multiple ()Z
|
public abstract fun multiple ()Z
|
||||||
public abstract fun required ()Z
|
public abstract fun required ()Z
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface annotation class hep/dataforge/descriptors/ValueDef : java/lang/annotation/Annotation {
|
public abstract interface annotation class space/kscience/dataforge/descriptors/ValueDef : java/lang/annotation/Annotation {
|
||||||
public abstract fun allowed ()[Ljava/lang/String;
|
public abstract fun allowed ()[Ljava/lang/String;
|
||||||
public abstract fun def ()Ljava/lang/String;
|
public abstract fun def ()Ljava/lang/String;
|
||||||
public abstract fun enumeration ()Ljava/lang/Class;
|
public abstract fun enumeration ()Ljava/lang/Class;
|
||||||
public abstract fun type ()[Lhep/dataforge/values/ValueType;
|
public abstract fun type ()[Lspace/kscience/dataforge/values/ValueType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/properties/ConfigProperty : hep/dataforge/properties/Property {
|
public final class space/kscience/dataforge/properties/Property$DefaultImpls {
|
||||||
public fun <init> (Lhep/dataforge/meta/Config;Lhep/dataforge/names/Name;Lhep/dataforge/meta/transformations/MetaConverter;)V
|
public static synthetic fun onChange$default (Lspace/kscience/dataforge/properties/Property;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
|
||||||
public final fun getConfig ()Lhep/dataforge/meta/Config;
|
public static synthetic fun removeChangeListener$default (Lspace/kscience/dataforge/properties/Property;Ljava/lang/Object;ILjava/lang/Object;)V
|
||||||
public final fun getConverter ()Lhep/dataforge/meta/transformations/MetaConverter;
|
|
||||||
public final fun getName ()Lhep/dataforge/names/Name;
|
|
||||||
public fun getValue ()Ljava/lang/Object;
|
|
||||||
public fun onChange (Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V
|
|
||||||
public fun removeChangeListener (Ljava/lang/Object;)V
|
|
||||||
public fun setValue (Ljava/lang/Object;)V
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class hep/dataforge/properties/Property {
|
public final class space/kscience/dataforge/properties/PropertyKt {
|
||||||
public abstract fun getValue ()Ljava/lang/Object;
|
|
||||||
public abstract fun onChange (Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V
|
|
||||||
public abstract fun removeChangeListener (Ljava/lang/Object;)V
|
|
||||||
public abstract fun setValue (Ljava/lang/Object;)V
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/properties/Property$DefaultImpls {
|
public final class space/kscience/dataforge/provider/DfTypeKt {
|
||||||
public static synthetic fun onChange$default (Lhep/dataforge/properties/Property;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
|
|
||||||
public static synthetic fun removeChangeListener$default (Lhep/dataforge/properties/Property;Ljava/lang/Object;ILjava/lang/Object;)V
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class hep/dataforge/properties/PropertyKt {
|
|
||||||
public static final fun bind (Lhep/dataforge/properties/Property;Lhep/dataforge/properties/Property;)V
|
|
||||||
public static final fun mirror (Lhep/dataforge/properties/Property;Lhep/dataforge/properties/Property;Lkotlinx/coroutines/CoroutineScope;)V
|
|
||||||
public static final fun toFlow (Lhep/dataforge/properties/Property;)Lkotlinx/coroutines/flow/StateFlow;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final class hep/dataforge/provider/DfTypeKt {
|
|
||||||
public static final fun getDfType (Lkotlin/reflect/KClass;)Ljava/lang/String;
|
public static final fun getDfType (Lkotlin/reflect/KClass;)Ljava/lang/String;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/provider/Path : java/lang/Iterable, kotlin/jvm/internal/markers/KMappedMarker {
|
public final class space/kscience/dataforge/provider/Path : java/lang/Iterable, kotlin/jvm/internal/markers/KMappedMarker {
|
||||||
public static final field Companion Lhep/dataforge/provider/Path$Companion;
|
public static final field Companion Lspace/kscience/dataforge/provider/Path$Companion;
|
||||||
public static final field PATH_SEGMENT_SEPARATOR Ljava/lang/String;
|
public static final field PATH_SEGMENT_SEPARATOR Ljava/lang/String;
|
||||||
public static final synthetic fun box-impl (Ljava/util/List;)Lhep/dataforge/provider/Path;
|
public static final synthetic fun box-impl (Ljava/util/List;)Lspace/kscience/dataforge/provider/Path;
|
||||||
public static fun constructor-impl (Ljava/util/List;)Ljava/util/List;
|
public static fun constructor-impl (Ljava/util/List;)Ljava/util/List;
|
||||||
public fun equals (Ljava/lang/Object;)Z
|
public fun equals (Ljava/lang/Object;)Z
|
||||||
public static fun equals-impl (Ljava/util/List;Ljava/lang/Object;)Z
|
public static fun equals-impl (Ljava/util/List;Ljava/lang/Object;)Z
|
||||||
@ -263,57 +297,57 @@ public final class hep/dataforge/provider/Path : java/lang/Iterable, kotlin/jvm/
|
|||||||
public final synthetic fun unbox-impl ()Ljava/util/List;
|
public final synthetic fun unbox-impl ()Ljava/util/List;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/provider/Path$Companion {
|
public final class space/kscience/dataforge/provider/Path$Companion {
|
||||||
public final fun parse-AnEnhig (Ljava/lang/String;)Ljava/util/List;
|
public final fun parse-X5wN5Vs (Ljava/lang/String;)Ljava/util/List;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/provider/PathKt {
|
public final class space/kscience/dataforge/provider/PathKt {
|
||||||
public static final fun Path ([Lhep/dataforge/names/Name;)Ljava/util/List;
|
|
||||||
public static final fun Path ([Lkotlin/Pair;)Ljava/util/List;
|
public static final fun Path ([Lkotlin/Pair;)Ljava/util/List;
|
||||||
public static final fun asPath (Lhep/dataforge/names/Name;Ljava/lang/String;)Ljava/util/List;
|
public static final fun Path ([Lspace/kscience/dataforge/names/Name;)Ljava/util/List;
|
||||||
public static final fun asPath (Lhep/dataforge/provider/PathToken;)Ljava/util/List;
|
public static final fun asPath (Lspace/kscience/dataforge/names/Name;Ljava/lang/String;)Ljava/util/List;
|
||||||
public static synthetic fun asPath$default (Lhep/dataforge/names/Name;Ljava/lang/String;ILjava/lang/Object;)Ljava/util/List;
|
public static final fun asPath (Lspace/kscience/dataforge/provider/PathToken;)Ljava/util/List;
|
||||||
public static final fun getHead-Ipm_iiw (Ljava/util/List;)Lhep/dataforge/provider/PathToken;
|
public static synthetic fun asPath$default (Lspace/kscience/dataforge/names/Name;Ljava/lang/String;ILjava/lang/Object;)Ljava/util/List;
|
||||||
public static final fun getLength-Ipm_iiw (Ljava/util/List;)I
|
public static final fun getHead-LGjlSZY (Ljava/util/List;)Lspace/kscience/dataforge/provider/PathToken;
|
||||||
public static final fun getTail-Ipm_iiw (Ljava/util/List;)Ljava/util/List;
|
public static final fun getLength-LGjlSZY (Ljava/util/List;)I
|
||||||
public static final fun plus-BlTXZnM (Ljava/util/List;Ljava/util/List;)Ljava/util/List;
|
public static final fun getTail-LGjlSZY (Ljava/util/List;)Ljava/util/List;
|
||||||
|
public static final fun plus-sn2Gq0g (Ljava/util/List;Ljava/util/List;)Ljava/util/List;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/provider/PathToken {
|
public final class space/kscience/dataforge/provider/PathToken {
|
||||||
public static final field Companion Lhep/dataforge/provider/PathToken$Companion;
|
public static final field Companion Lspace/kscience/dataforge/provider/PathToken$Companion;
|
||||||
public static final field TARGET_SEPARATOR Ljava/lang/String;
|
public static final field TARGET_SEPARATOR Ljava/lang/String;
|
||||||
public fun <init> (Lhep/dataforge/names/Name;Ljava/lang/String;)V
|
public fun <init> (Lspace/kscience/dataforge/names/Name;Ljava/lang/String;)V
|
||||||
public synthetic fun <init> (Lhep/dataforge/names/Name;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
public synthetic fun <init> (Lspace/kscience/dataforge/names/Name;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||||
public final fun component1 ()Lhep/dataforge/names/Name;
|
public final fun component1 ()Lspace/kscience/dataforge/names/Name;
|
||||||
public final fun component2 ()Ljava/lang/String;
|
public final fun component2 ()Ljava/lang/String;
|
||||||
public final fun copy (Lhep/dataforge/names/Name;Ljava/lang/String;)Lhep/dataforge/provider/PathToken;
|
public final fun copy (Lspace/kscience/dataforge/names/Name;Ljava/lang/String;)Lspace/kscience/dataforge/provider/PathToken;
|
||||||
public static synthetic fun copy$default (Lhep/dataforge/provider/PathToken;Lhep/dataforge/names/Name;Ljava/lang/String;ILjava/lang/Object;)Lhep/dataforge/provider/PathToken;
|
public static synthetic fun copy$default (Lspace/kscience/dataforge/provider/PathToken;Lspace/kscience/dataforge/names/Name;Ljava/lang/String;ILjava/lang/Object;)Lspace/kscience/dataforge/provider/PathToken;
|
||||||
public fun equals (Ljava/lang/Object;)Z
|
public fun equals (Ljava/lang/Object;)Z
|
||||||
public final fun getName ()Lhep/dataforge/names/Name;
|
public final fun getName ()Lspace/kscience/dataforge/names/Name;
|
||||||
public final fun getTarget ()Ljava/lang/String;
|
public final fun getTarget ()Ljava/lang/String;
|
||||||
public fun hashCode ()I
|
public fun hashCode ()I
|
||||||
public fun toString ()Ljava/lang/String;
|
public fun toString ()Ljava/lang/String;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/provider/PathToken$Companion {
|
public final class space/kscience/dataforge/provider/PathToken$Companion {
|
||||||
public final fun parse (Ljava/lang/String;)Lhep/dataforge/provider/PathToken;
|
public final fun parse (Ljava/lang/String;)Lspace/kscience/dataforge/provider/PathToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract interface class hep/dataforge/provider/Provider {
|
public abstract interface class space/kscience/dataforge/provider/Provider {
|
||||||
public abstract fun content (Ljava/lang/String;)Ljava/util/Map;
|
public abstract fun content (Ljava/lang/String;)Ljava/util/Map;
|
||||||
public abstract fun getDefaultChainTarget ()Ljava/lang/String;
|
public abstract fun getDefaultChainTarget ()Ljava/lang/String;
|
||||||
public abstract fun getDefaultTarget ()Ljava/lang/String;
|
public abstract fun getDefaultTarget ()Ljava/lang/String;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/provider/Provider$DefaultImpls {
|
public final class space/kscience/dataforge/provider/Provider$DefaultImpls {
|
||||||
public static fun content (Lhep/dataforge/provider/Provider;Ljava/lang/String;)Ljava/util/Map;
|
public static fun content (Lspace/kscience/dataforge/provider/Provider;Ljava/lang/String;)Ljava/util/Map;
|
||||||
public static fun getDefaultChainTarget (Lhep/dataforge/provider/Provider;)Ljava/lang/String;
|
public static fun getDefaultChainTarget (Lspace/kscience/dataforge/provider/Provider;)Ljava/lang/String;
|
||||||
public static fun getDefaultTarget (Lhep/dataforge/provider/Provider;)Ljava/lang/String;
|
public static fun getDefaultTarget (Lspace/kscience/dataforge/provider/Provider;)Ljava/lang/String;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class hep/dataforge/provider/ProviderKt {
|
public final class space/kscience/dataforge/provider/ProviderKt {
|
||||||
public static final fun provide-mzxrFLw (Lhep/dataforge/provider/Provider;Ljava/util/List;Ljava/lang/String;)Ljava/lang/Object;
|
public static final fun provide-CSkoCSg (Lspace/kscience/dataforge/provider/Provider;Ljava/util/List;Ljava/lang/String;)Ljava/lang/Object;
|
||||||
public static synthetic fun provide-mzxrFLw$default (Lhep/dataforge/provider/Provider;Ljava/util/List;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
|
public static synthetic fun provide-CSkoCSg$default (Lspace/kscience/dataforge/provider/Provider;Ljava/util/List;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
|
||||||
public static final fun top (Lhep/dataforge/provider/Provider;Ljava/lang/String;Lkotlin/reflect/KClass;)Ljava/util/Map;
|
public static final fun top (Lspace/kscience/dataforge/provider/Provider;Ljava/lang/String;Lkotlin/reflect/KClass;)Ljava/util/Map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("ru.mipt.npm.mpp")
|
id("ru.mipt.npm.gradle.mpp")
|
||||||
id("ru.mipt.npm.native")
|
id("ru.mipt.npm.gradle.native")
|
||||||
}
|
}
|
||||||
|
|
||||||
description = "Context and provider definitions"
|
description = "Context and provider definitions"
|
||||||
@ -11,20 +11,20 @@ kscience {
|
|||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
sourceSets {
|
sourceSets {
|
||||||
val commonMain by getting {
|
val commonMain by getting{
|
||||||
dependencies {
|
dependencies {
|
||||||
api(project(":dataforge-meta"))
|
api(project(":dataforge-meta"))
|
||||||
api("io.github.microutils:kotlin-logging:1.9.0-dev-npm-2")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val jvmMain by getting {
|
jvmMain {
|
||||||
dependencies {
|
dependencies {
|
||||||
api(kotlin("reflect"))
|
api(kotlin("reflect"))
|
||||||
api("ch.qos.logback:logback-classic:1.2.3")
|
api("org.slf4j:slf4j-api:1.7.30")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val jsMain by getting {
|
jsMain {
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
package hep.dataforge.context
|
|
||||||
|
|
||||||
import hep.dataforge.misc.Named
|
|
||||||
import hep.dataforge.provider.Path
|
|
||||||
import mu.KLogger
|
|
||||||
import mu.KotlinLogging
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The logger specific to this context
|
|
||||||
*/
|
|
||||||
public val Context.logger: KLogger get() = KotlinLogging.logger(name.toString())
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The logger
|
|
||||||
*/
|
|
||||||
public val ContextAware.logger: KLogger
|
|
||||||
get() = if (this is Named) {
|
|
||||||
KotlinLogging.logger(Path(context.name, this.name).toString())
|
|
||||||
} else {
|
|
||||||
context.logger
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.misc.Named
|
import space.kscience.dataforge.misc.Named
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import kotlin.properties.ReadOnlyProperty
|
import kotlin.properties.ReadOnlyProperty
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
@ -1,15 +1,15 @@
|
|||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import hep.dataforge.meta.Laminate
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.meta.MetaRepr
|
|
||||||
import hep.dataforge.meta.itemSequence
|
|
||||||
import hep.dataforge.misc.Named
|
|
||||||
import hep.dataforge.names.Name
|
|
||||||
import hep.dataforge.provider.Provider
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.SupervisorJob
|
import kotlinx.coroutines.SupervisorJob
|
||||||
|
import space.kscience.dataforge.meta.Laminate
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.meta.MetaRepr
|
||||||
|
import space.kscience.dataforge.meta.itemSequence
|
||||||
|
import space.kscience.dataforge.misc.Named
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import space.kscience.dataforge.provider.Provider
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,15 +1,13 @@
|
|||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.meta.MetaBuilder
|
import space.kscience.dataforge.meta.MetaBuilder
|
||||||
import hep.dataforge.meta.seal
|
import space.kscience.dataforge.meta.seal
|
||||||
import hep.dataforge.misc.DFBuilder
|
import space.kscience.dataforge.misc.DFBuilder
|
||||||
import hep.dataforge.misc.DFExperimental
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
import hep.dataforge.names.toName
|
import space.kscience.dataforge.names.toName
|
||||||
import kotlin.collections.HashMap
|
|
||||||
import kotlin.collections.component1
|
import kotlin.collections.component1
|
||||||
import kotlin.collections.component2
|
import kotlin.collections.component2
|
||||||
import kotlin.collections.forEach
|
|
||||||
import kotlin.collections.set
|
import kotlin.collections.set
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,6 +1,6 @@
|
|||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
|
||||||
public interface Factory<out T : Any> {
|
public interface Factory<out T : Any> {
|
||||||
public operator fun invoke(meta: Meta = Meta.EMPTY, context: Context = Global): T
|
public operator fun invoke(meta: Meta = Meta.EMPTY, context: Context = Global): T
|
@ -1,12 +1,14 @@
|
|||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.names.asName
|
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.SupervisorJob
|
import kotlinx.coroutines.SupervisorJob
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.names.asName
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
||||||
import kotlin.native.concurrent.ThreadLocal
|
import kotlin.native.concurrent.ThreadLocal
|
||||||
|
|
||||||
|
internal expect val globalLoggerFactory: PluginFactory<out LogManager>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A global root context. Closing [Global] terminates the framework.
|
* A global root context. Closing [Global] terminates the framework.
|
||||||
*/
|
*/
|
||||||
@ -15,6 +17,11 @@ public object Global : Context("GLOBAL".asName(), null, Meta.EMPTY) {
|
|||||||
|
|
||||||
override val coroutineContext: CoroutineContext = GlobalScope.coroutineContext + SupervisorJob()
|
override val coroutineContext: CoroutineContext = GlobalScope.coroutineContext + SupervisorJob()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default logging manager
|
||||||
|
*/
|
||||||
|
public val logger: LogManager by lazy { globalLoggerFactory.invoke(context = this).apply { attach(this@Global) } }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Closing all contexts
|
* Closing all contexts
|
||||||
*
|
*
|
@ -0,0 +1,64 @@
|
|||||||
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
|
import space.kscience.dataforge.misc.Named
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import space.kscience.dataforge.names.plus
|
||||||
|
|
||||||
|
public interface Logable {
|
||||||
|
public fun log(name: Name, tag: String, body: () -> String)
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface LogManager : Plugin, Logable {
|
||||||
|
|
||||||
|
public companion object {
|
||||||
|
public const val TRACE: String = "TRACE"
|
||||||
|
public const val INFO: String = "INFO"
|
||||||
|
public const val DEBUG: String = "DEBUG"
|
||||||
|
public const val WARNING: String = "WARNING"
|
||||||
|
public const val ERROR: String = "ERROR"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun Logable.trace(name: Name = Name.EMPTY, body: () -> String): Unit = log(name, LogManager.TRACE, body)
|
||||||
|
public fun Logable.info(name: Name = Name.EMPTY, body: () -> String): Unit = log(name, LogManager.INFO, body)
|
||||||
|
public fun Logable.debug(name: Name = Name.EMPTY, body: () -> String): Unit = log(name, LogManager.DEBUG, body)
|
||||||
|
public fun Logable.warn(name: Name = Name.EMPTY, body: () -> String): Unit = log(name, LogManager.WARNING, body)
|
||||||
|
public fun Logable.error(name: Name = Name.EMPTY, body: () -> String): Unit = log(name, LogManager.ERROR, body)
|
||||||
|
|
||||||
|
internal val (() -> String).safe: String
|
||||||
|
get() = try {
|
||||||
|
invoke()
|
||||||
|
} catch (t: Throwable) {
|
||||||
|
"Error while evaluating log string: ${t.message}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public fun Logable.error(throwable: Throwable?, name: Name = Name.EMPTY, body: () -> String): Unit =
|
||||||
|
log(name, LogManager.ERROR) {
|
||||||
|
buildString {
|
||||||
|
appendLine(body())
|
||||||
|
throwable?.let { appendLine(throwable.stackTraceToString()) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Context log manager inherited from parent
|
||||||
|
*/
|
||||||
|
public val Context.logger: LogManager
|
||||||
|
get() = plugins.find(inherit = true) { it is LogManager } as? LogManager ?: Global.logger
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The named proxy logger for a context member
|
||||||
|
*/
|
||||||
|
public val ContextAware.logger: Logable
|
||||||
|
get() = if (this is Named) {
|
||||||
|
object : Logable {
|
||||||
|
val contextLog = context.logger
|
||||||
|
override fun log(name: Name, tag: String, body: () -> String) {
|
||||||
|
contextLog.log(this@logger.name + name, tag, body)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
context.logger
|
||||||
|
}
|
||||||
|
|
@ -1,13 +1,13 @@
|
|||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import hep.dataforge.context.Plugin.Companion.TARGET
|
import space.kscience.dataforge.context.Plugin.Companion.TARGET
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.meta.MetaRepr
|
import space.kscience.dataforge.meta.MetaRepr
|
||||||
import hep.dataforge.misc.Named
|
import space.kscience.dataforge.misc.Named
|
||||||
import hep.dataforge.misc.Type
|
import space.kscience.dataforge.misc.Type
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import hep.dataforge.names.toName
|
import space.kscience.dataforge.names.toName
|
||||||
import hep.dataforge.provider.Provider
|
import space.kscience.dataforge.provider.Provider
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The interface to define a Context plugin. A plugin stores all runtime features of a context.
|
* The interface to define a Context plugin. A plugin stores all runtime features of a context.
|
@ -1,6 +1,6 @@
|
|||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import hep.dataforge.misc.Type
|
import space.kscience.dataforge.misc.Type
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
@Type(PluginFactory.TYPE)
|
@Type(PluginFactory.TYPE)
|
@ -1,7 +1,7 @@
|
|||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.meta.MetaBuilder
|
import space.kscience.dataforge.meta.MetaBuilder
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ public class PluginManager(override val context: Context) : ContextAware, Iterab
|
|||||||
fetch(factory, meta, true)
|
fetch(factory, meta, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info { "Loading plugin ${plugin.name} into ${context.name}" }
|
Global.logger.info { "Loading plugin ${plugin.name} into ${context.name}" }
|
||||||
plugin.attach(context)
|
plugin.attach(context)
|
||||||
plugins.add(plugin)
|
plugins.add(plugin)
|
||||||
return plugin
|
return plugin
|
||||||
@ -114,7 +114,7 @@ public class PluginManager(override val context: Context) : ContextAware, Iterab
|
|||||||
*/
|
*/
|
||||||
public fun remove(plugin: Plugin) {
|
public fun remove(plugin: Plugin) {
|
||||||
if (plugins.contains(plugin)) {
|
if (plugins.contains(plugin)) {
|
||||||
logger.info { "Removing plugin ${plugin.name} from ${context.name}" }
|
Global.logger.info { "Removing plugin ${plugin.name} from ${context.name}" }
|
||||||
plugin.detach()
|
plugin.detach()
|
||||||
plugins.remove(plugin)
|
plugins.remove(plugin)
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.meta.MetaRepr
|
import space.kscience.dataforge.meta.MetaRepr
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The tag which contains information about name, group and version of some
|
* The tag which contains information about name, group and version of some
|
||||||
@ -43,7 +43,7 @@ public data class PluginTag(
|
|||||||
|
|
||||||
public companion object {
|
public companion object {
|
||||||
|
|
||||||
public const val DATAFORGE_GROUP: String = "hep.dataforge"
|
public const val DATAFORGE_GROUP: String = "dataforge"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build new PluginTag from standard string representation
|
* Build new PluginTag from standard string representation
|
@ -1,10 +1,10 @@
|
|||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import hep.dataforge.names.plus
|
import space.kscience.dataforge.names.plus
|
||||||
import hep.dataforge.provider.Provider
|
import space.kscience.dataforge.provider.Provider
|
||||||
import hep.dataforge.provider.top
|
import space.kscience.dataforge.provider.top
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.reflect.cast
|
import kotlin.reflect.cast
|
||||||
|
|
@ -1,13 +1,13 @@
|
|||||||
package hep.dataforge.properties
|
package space.kscience.dataforge.properties
|
||||||
|
|
||||||
import hep.dataforge.meta.Config
|
import space.kscience.dataforge.meta.Config
|
||||||
import hep.dataforge.meta.get
|
import space.kscience.dataforge.meta.get
|
||||||
import hep.dataforge.meta.set
|
import space.kscience.dataforge.meta.set
|
||||||
import hep.dataforge.meta.transformations.MetaConverter
|
import space.kscience.dataforge.meta.transformations.MetaConverter
|
||||||
import hep.dataforge.meta.transformations.nullableItemToObject
|
import space.kscience.dataforge.meta.transformations.nullableItemToObject
|
||||||
import hep.dataforge.meta.transformations.nullableObjectToMetaItem
|
import space.kscience.dataforge.meta.transformations.nullableObjectToMetaItem
|
||||||
import hep.dataforge.misc.DFExperimental
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
|
|
||||||
@DFExperimental
|
@DFExperimental
|
||||||
public class ConfigProperty<T : Any>(
|
public class ConfigProperty<T : Any>(
|
@ -1,10 +1,10 @@
|
|||||||
package hep.dataforge.properties
|
package space.kscience.dataforge.properties
|
||||||
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
|
||||||
@DFExperimental
|
@DFExperimental
|
||||||
public interface Property<T> {
|
public interface Property<T> {
|
@ -13,10 +13,10 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package hep.dataforge.provider
|
package space.kscience.dataforge.provider
|
||||||
|
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import hep.dataforge.names.toName
|
import space.kscience.dataforge.names.toName
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Path interface.
|
* Path interface.
|
@ -13,9 +13,9 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package hep.dataforge.provider
|
package space.kscience.dataforge.provider
|
||||||
|
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.reflect.safeCast
|
import kotlin.reflect.safeCast
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import hep.dataforge.names.appendLeft
|
import space.kscience.dataforge.names.appendLeft
|
||||||
import hep.dataforge.names.toName
|
import space.kscience.dataforge.names.toName
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
public class ConsoleLogManager : AbstractPlugin(), LogManager {
|
||||||
|
|
||||||
|
override fun log(name: Name, tag: String, body: () -> String) {
|
||||||
|
val message: String = body.safe
|
||||||
|
when (tag) {
|
||||||
|
LogManager.INFO -> console.info("[${context.name}] $name: $message")
|
||||||
|
LogManager.WARNING -> console.warn("[${context.name}] $name: $message")
|
||||||
|
LogManager.ERROR -> console.error("[${context.name}] $name: $message")
|
||||||
|
else -> console.log("[${context.name}] $name: $message")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override val tag: PluginTag get() = Companion.tag
|
||||||
|
|
||||||
|
public companion object : PluginFactory<ConsoleLogManager> {
|
||||||
|
override fun invoke(meta: Meta, context: Context): ConsoleLogManager = ConsoleLogManager()
|
||||||
|
|
||||||
|
override val tag: PluginTag = PluginTag(group = PluginTag.DATAFORGE_GROUP, name = "log.jsConsole")
|
||||||
|
override val type: KClass<out ConsoleLogManager> = ConsoleLogManager::class
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal actual val globalLoggerFactory: PluginFactory<out LogManager> = ConsoleLogManager
|
@ -1,7 +1,7 @@
|
|||||||
package hep.dataforge.properties
|
package space.kscience.dataforge.properties
|
||||||
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import org.w3c.dom.HTMLInputElement
|
import org.w3c.dom.HTMLInputElement
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
|
||||||
@DFExperimental
|
@DFExperimental
|
||||||
public fun HTMLInputElement.bindValue(property: Property<String>) {
|
public fun HTMLInputElement.bindValue(property: Property<String>) {
|
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package hep.dataforge.context
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
@ -0,0 +1,32 @@
|
|||||||
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
|
import org.slf4j.LoggerFactory
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
public class SlfLogManager : AbstractPlugin(), LogManager {
|
||||||
|
|
||||||
|
override fun log(name: Name, tag: String, body: () -> String) {
|
||||||
|
val logger = LoggerFactory.getLogger("[${context.name}] $name") //KotlinLogging.logger("[${context.name}] $name")
|
||||||
|
val message = body.safe
|
||||||
|
when (tag) {
|
||||||
|
LogManager.DEBUG -> logger.debug(message)
|
||||||
|
LogManager.INFO -> logger.info(message)
|
||||||
|
LogManager.WARNING -> logger.warn(message)
|
||||||
|
LogManager.ERROR -> logger.error(message)
|
||||||
|
else -> logger.trace(message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override val tag: PluginTag get() = Companion.tag
|
||||||
|
|
||||||
|
public companion object : PluginFactory<SlfLogManager> {
|
||||||
|
override fun invoke(meta: Meta, context: Context): SlfLogManager = SlfLogManager()
|
||||||
|
|
||||||
|
override val tag: PluginTag = PluginTag(group = PluginTag.DATAFORGE_GROUP, name = "log.kotlinLogging")
|
||||||
|
override val type: KClass<out SlfLogManager> = SlfLogManager::class
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal actual val globalLoggerFactory: PluginFactory<out LogManager> = SlfLogManager
|
@ -14,9 +14,9 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package hep.dataforge.descriptors
|
package space.kscience.dataforge.descriptors
|
||||||
|
|
||||||
import hep.dataforge.values.ValueType
|
import space.kscience.dataforge.values.ValueType
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
@MustBeDocumented
|
@MustBeDocumented
|
@ -1,4 +1,4 @@
|
|||||||
package hep.dataforge.descriptors
|
package space.kscience.dataforge.descriptors
|
||||||
|
|
||||||
|
|
||||||
//inline fun <reified T : Scheme> T.buildDescriptor(): NodeDescriptor = NodeDescriptor {
|
//inline fun <reified T : Scheme> T.buildDescriptor(): NodeDescriptor = NodeDescriptor {
|
@ -1,10 +1,10 @@
|
|||||||
package hep.dataforge.provider
|
package space.kscience.dataforge.provider
|
||||||
|
|
||||||
import hep.dataforge.context.Context
|
import space.kscience.dataforge.context.Context
|
||||||
import hep.dataforge.context.gather
|
import space.kscience.dataforge.context.gather
|
||||||
import hep.dataforge.misc.DFExperimental
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
import hep.dataforge.misc.Type
|
import space.kscience.dataforge.misc.Type
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.reflect.full.findAnnotation
|
import kotlin.reflect.full.findAnnotation
|
||||||
|
|
@ -0,0 +1,25 @@
|
|||||||
|
package space.kscience.dataforge.context
|
||||||
|
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
|
||||||
|
public class NativeLogManager : AbstractPlugin(), LogManager {
|
||||||
|
|
||||||
|
override fun log(name: Name, tag: String, body: () -> String) {
|
||||||
|
val message: String = body.safe
|
||||||
|
println("[${context.name}] $name: $message")
|
||||||
|
}
|
||||||
|
|
||||||
|
override val tag: PluginTag get() = Companion.tag
|
||||||
|
|
||||||
|
public companion object : PluginFactory<NativeLogManager> {
|
||||||
|
override fun invoke(meta: Meta, context: Context): NativeLogManager = NativeLogManager()
|
||||||
|
|
||||||
|
override val tag: PluginTag = PluginTag(group = PluginTag.DATAFORGE_GROUP, name = "log.native")
|
||||||
|
override val type: KClass<out NativeLogManager> = NativeLogManager::class
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal actual val globalLoggerFactory: PluginFactory<out LogManager> = NativeLogManager
|
@ -1,6 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("ru.mipt.npm.mpp")
|
id("ru.mipt.npm.gradle.mpp")
|
||||||
id("ru.mipt.npm.native")
|
id("ru.mipt.npm.gradle.native")
|
||||||
}
|
}
|
||||||
|
|
||||||
kscience{
|
kscience{
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package hep.dataforge.actions
|
package space.kscience.dataforge.actions
|
||||||
|
|
||||||
import hep.dataforge.data.DataSet
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import space.kscience.dataforge.data.DataSet
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A simple data transformation on a data node. Actions should avoid doing actual dependency evaluation in [execute].
|
* A simple data transformation on a data node. Actions should avoid doing actual dependency evaluation in [execute].
|
@ -1,18 +1,18 @@
|
|||||||
package hep.dataforge.actions
|
package space.kscience.dataforge.actions
|
||||||
|
|
||||||
import hep.dataforge.data.*
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.meta.MetaBuilder
|
|
||||||
import hep.dataforge.meta.seal
|
|
||||||
import hep.dataforge.meta.toMutableMeta
|
|
||||||
import hep.dataforge.misc.DFBuilder
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import hep.dataforge.misc.DFInternal
|
|
||||||
import hep.dataforge.names.Name
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import space.kscience.dataforge.data.*
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.meta.MetaBuilder
|
||||||
|
import space.kscience.dataforge.meta.seal
|
||||||
|
import space.kscience.dataforge.meta.toMutableMeta
|
||||||
|
import space.kscience.dataforge.misc.DFBuilder
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
import space.kscience.dataforge.misc.DFInternal
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
|
|
@ -1,17 +1,17 @@
|
|||||||
package hep.dataforge.actions
|
package space.kscience.dataforge.actions
|
||||||
|
|
||||||
import hep.dataforge.data.*
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.meta.MetaBuilder
|
|
||||||
import hep.dataforge.misc.DFBuilder
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import hep.dataforge.misc.DFInternal
|
|
||||||
import hep.dataforge.names.Name
|
|
||||||
import hep.dataforge.names.toName
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.flow
|
import kotlinx.coroutines.flow.flow
|
||||||
import kotlinx.coroutines.flow.fold
|
import kotlinx.coroutines.flow.fold
|
||||||
|
import space.kscience.dataforge.data.*
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.meta.MetaBuilder
|
||||||
|
import space.kscience.dataforge.misc.DFBuilder
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
import space.kscience.dataforge.misc.DFInternal
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import space.kscience.dataforge.names.toName
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
|
|
@ -1,18 +1,18 @@
|
|||||||
package hep.dataforge.actions
|
package space.kscience.dataforge.actions
|
||||||
|
|
||||||
import hep.dataforge.data.*
|
|
||||||
import hep.dataforge.meta.Laminate
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.meta.MetaBuilder
|
|
||||||
import hep.dataforge.meta.toMutableMeta
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import hep.dataforge.misc.DFInternal
|
|
||||||
import hep.dataforge.names.Name
|
|
||||||
import hep.dataforge.names.toName
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.FlowPreview
|
import kotlinx.coroutines.FlowPreview
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import space.kscience.dataforge.data.*
|
||||||
|
import space.kscience.dataforge.meta.Laminate
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.meta.MetaBuilder
|
||||||
|
import space.kscience.dataforge.meta.toMutableMeta
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
import space.kscience.dataforge.misc.DFInternal
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import space.kscience.dataforge.names.toName
|
||||||
import kotlin.collections.set
|
import kotlin.collections.set
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
@ -1,13 +1,13 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.meta.*
|
|
||||||
import hep.dataforge.names.*
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.sync.Mutex
|
import kotlinx.coroutines.sync.Mutex
|
||||||
import kotlinx.coroutines.sync.withLock
|
import kotlinx.coroutines.sync.withLock
|
||||||
|
import space.kscience.dataforge.meta.*
|
||||||
|
import space.kscience.dataforge.names.*
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
|
|
@ -1,13 +1,13 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.actions.Action
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.names.Name
|
|
||||||
import hep.dataforge.names.startsWith
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.coroutineScope
|
import kotlinx.coroutines.coroutineScope
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
|
import space.kscience.dataforge.actions.Action
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import space.kscience.dataforge.names.startsWith
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,12 +1,11 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A monitor of goal state that could be accessed only form inside the goal
|
* A monitor of goal state that could be accessed only form inside the goal
|
||||||
*/
|
*/
|
@ -1,11 +1,11 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.meta.MetaRepr
|
|
||||||
import hep.dataforge.meta.isEmpty
|
|
||||||
import hep.dataforge.misc.DFInternal
|
|
||||||
import hep.dataforge.misc.Type
|
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.meta.MetaRepr
|
||||||
|
import space.kscience.dataforge.meta.isEmpty
|
||||||
|
import space.kscience.dataforge.misc.DFInternal
|
||||||
|
import space.kscience.dataforge.misc.Type
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
||||||
import kotlin.coroutines.EmptyCoroutineContext
|
import kotlin.coroutines.EmptyCoroutineContext
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
@ -1,11 +1,11 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.data.Data.Companion.TYPE_OF_NOTHING
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.meta.set
|
|
||||||
import hep.dataforge.names.*
|
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
|
import space.kscience.dataforge.data.Data.Companion.TYPE_OF_NOTHING
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.meta.set
|
||||||
|
import space.kscience.dataforge.names.*
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
|
|
||||||
public interface DataSet<out T : Any> {
|
public interface DataSet<out T : Any> {
|
@ -1,14 +1,14 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.meta.MetaBuilder
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import hep.dataforge.names.Name
|
|
||||||
import hep.dataforge.names.plus
|
|
||||||
import hep.dataforge.names.toName
|
|
||||||
import kotlinx.coroutines.coroutineScope
|
import kotlinx.coroutines.coroutineScope
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.meta.MetaBuilder
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import space.kscience.dataforge.names.plus
|
||||||
|
import space.kscience.dataforge.names.toName
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
|
|
||||||
public interface DataSetBuilder<in T : Any> {
|
public interface DataSetBuilder<in T : Any> {
|
@ -1,11 +1,11 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.misc.Type
|
|
||||||
import hep.dataforge.names.*
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.emitAll
|
import kotlinx.coroutines.flow.emitAll
|
||||||
import kotlinx.coroutines.flow.flow
|
import kotlinx.coroutines.flow.flow
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
|
import space.kscience.dataforge.misc.Type
|
||||||
|
import space.kscience.dataforge.names.*
|
||||||
import kotlin.collections.component1
|
import kotlin.collections.component1
|
||||||
import kotlin.collections.component2
|
import kotlin.collections.component2
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
@ -1,7 +1,7 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
||||||
import kotlin.coroutines.EmptyCoroutineContext
|
import kotlin.coroutines.EmptyCoroutineContext
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
||||||
|
|
@ -13,13 +13,13 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.meta.get
|
|
||||||
import hep.dataforge.meta.string
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import space.kscience.dataforge.meta.get
|
||||||
|
import space.kscience.dataforge.meta.string
|
||||||
|
|
||||||
public interface GroupRule {
|
public interface GroupRule {
|
||||||
public suspend fun <T : Any> gather(set: DataSet<T>): Map<String, DataSet<T>>
|
public suspend fun <T : Any> gather(set: DataSet<T>): Map<String, DataSet<T>>
|
||||||
@ -52,7 +52,7 @@ public interface GroupRule {
|
|||||||
scope.launch {
|
scope.launch {
|
||||||
set.updates.collect { name ->
|
set.updates.collect { name ->
|
||||||
val data = set.getData(name)
|
val data = set.getData(name)
|
||||||
val tagValue = data?.meta[key]?.string ?: defaultTagValue
|
val tagValue = data?.meta[key].string ?: defaultTagValue
|
||||||
map.getOrPut(tagValue) { ActiveDataTree(set.dataType) }.emit(name, data)
|
map.getOrPut(tagValue) { ActiveDataTree(set.dataType) }.emit(name, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,8 +1,8 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.meta.isEmpty
|
import space.kscience.dataforge.meta.isEmpty
|
||||||
import hep.dataforge.misc.Named
|
import space.kscience.dataforge.misc.Named
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
|
|
||||||
public interface NamedData<out T : Any> : Named, Data<T> {
|
public interface NamedData<out T : Any> : Named, Data<T> {
|
||||||
override val name: Name
|
override val name: Name
|
@ -1,8 +1,9 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.names.*
|
|
||||||
import kotlinx.coroutines.coroutineScope
|
import kotlinx.coroutines.coroutineScope
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
import space.kscience.dataforge.names.*
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
|
|
||||||
@ -71,6 +72,7 @@ public suspend inline fun <reified T : Any> DataTree(
|
|||||||
noinline block: suspend DataSetBuilder<T>.() -> Unit,
|
noinline block: suspend DataSetBuilder<T>.() -> Unit,
|
||||||
): DataTree<T> = DataTree(typeOf<T>(), block)
|
): DataTree<T> = DataTree(typeOf<T>(), block)
|
||||||
|
|
||||||
|
@OptIn(DFExperimental::class)
|
||||||
public suspend fun <T : Any> DataSet<T>.seal(): DataTree<T> = DataTree(dataType){
|
public suspend fun <T : Any> DataSet<T>.seal(): DataTree<T> = DataTree(dataType){
|
||||||
populate(this@seal)
|
populate(this@seal)
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import hep.dataforge.names.*
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.filter
|
import kotlinx.coroutines.flow.filter
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.flow.mapNotNull
|
import kotlinx.coroutines.flow.mapNotNull
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
import space.kscience.dataforge.names.*
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.meta.MetaBuilder
|
import space.kscience.dataforge.meta.MetaBuilder
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,11 +1,11 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.meta.MetaBuilder
|
|
||||||
import hep.dataforge.meta.seal
|
|
||||||
import hep.dataforge.meta.toMutableMeta
|
|
||||||
import hep.dataforge.misc.DFInternal
|
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.meta.MetaBuilder
|
||||||
|
import space.kscience.dataforge.meta.seal
|
||||||
|
import space.kscience.dataforge.meta.toMutableMeta
|
||||||
|
import space.kscience.dataforge.misc.DFInternal
|
||||||
import kotlin.contracts.InvocationKind
|
import kotlin.contracts.InvocationKind
|
||||||
import kotlin.contracts.contract
|
import kotlin.contracts.contract
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
@ -1,12 +1,12 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import hep.dataforge.names.Name
|
|
||||||
import hep.dataforge.names.matches
|
|
||||||
import hep.dataforge.names.toName
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.filter
|
import kotlinx.coroutines.flow.filter
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import space.kscience.dataforge.names.matches
|
||||||
|
import space.kscience.dataforge.names.toName
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.full.isSubtypeOf
|
import kotlin.reflect.full.isSubtypeOf
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
@ -1,9 +1,9 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.actions.Action
|
|
||||||
import hep.dataforge.actions.map
|
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
import space.kscience.dataforge.actions.Action
|
||||||
|
import space.kscience.dataforge.actions.map
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
@Suppress("EXPERIMENTAL_API_USAGE")
|
@Suppress("EXPERIMENTAL_API_USAGE")
|
@ -1,8 +1,9 @@
|
|||||||
package hep.dataforge.data
|
package space.kscience.dataforge.data
|
||||||
|
|
||||||
import hep.dataforge.names.toName
|
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
import space.kscience.dataforge.names.toName
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
@ -26,6 +27,7 @@ internal class DataTreeBuilderTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(DFExperimental::class)
|
||||||
@Test
|
@Test
|
||||||
fun testDataUpdate() = runBlocking {
|
fun testDataUpdate() = runBlocking {
|
||||||
val updateData: DataTree<Any> = DataTree {
|
val updateData: DataTree<Any> = DataTree {
|
@ -1,6 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("ru.mipt.npm.mpp")
|
id("ru.mipt.npm.gradle.mpp")
|
||||||
id("ru.mipt.npm.native")
|
id("ru.mipt.npm.gradle.native")
|
||||||
}
|
}
|
||||||
|
|
||||||
description = "IO module"
|
description = "IO module"
|
||||||
@ -11,14 +11,14 @@ kscience {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val ioVersion by rootProject.extra("0.2.0-npm-dev-11")
|
//val ioVersion by rootProject.extra("0.2.0-npm-dev-11")
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
sourceSets {
|
sourceSets {
|
||||||
commonMain {
|
commonMain {
|
||||||
dependencies {
|
dependencies {
|
||||||
api(project(":dataforge-context"))
|
api(project(":dataforge-context"))
|
||||||
api("org.jetbrains.kotlinx:kotlinx-io:$ioVersion")
|
api("io.ktor:ktor-io:${ru.mipt.npm.gradle.KScienceVersions.ktorVersion}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("ru.mipt.npm.mpp")
|
id("ru.mipt.npm.gradle.mpp")
|
||||||
// id("ru.mipt.npm.native")
|
// id("ru.mipt.npm.gradle.native")
|
||||||
}
|
}
|
||||||
|
|
||||||
description = "YAML meta IO"
|
description = "YAML meta IO"
|
||||||
|
@ -1,124 +0,0 @@
|
|||||||
package hep.dataforge.io.yaml
|
|
||||||
|
|
||||||
import hep.dataforge.context.Context
|
|
||||||
import hep.dataforge.io.*
|
|
||||||
import hep.dataforge.io.IOFormat.Companion.META_KEY
|
|
||||||
import hep.dataforge.io.IOFormat.Companion.NAME_KEY
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import kotlinx.io.*
|
|
||||||
import kotlinx.io.text.readUtf8Line
|
|
||||||
import kotlinx.io.text.writeUtf8String
|
|
||||||
|
|
||||||
@DFExperimental
|
|
||||||
public class FrontMatterEnvelopeFormat(
|
|
||||||
private val io: IOPlugin,
|
|
||||||
private val meta: Meta = Meta.EMPTY,
|
|
||||||
) : EnvelopeFormat {
|
|
||||||
|
|
||||||
override fun readPartial(input: Input): PartialEnvelope {
|
|
||||||
var line: String
|
|
||||||
var offset = 0u
|
|
||||||
do {
|
|
||||||
line = input.readUtf8Line() //?: error("Input does not contain front matter separator")
|
|
||||||
offset += line.encodeToByteArray().size.toUInt()
|
|
||||||
} while (!line.startsWith(SEPARATOR))
|
|
||||||
|
|
||||||
val readMetaFormat =
|
|
||||||
metaTypeRegex.matchEntire(line)?.groupValues?.first()
|
|
||||||
?.let { io.resolveMetaFormat(it) } ?: YamlMetaFormat
|
|
||||||
|
|
||||||
//TODO replace by preview
|
|
||||||
val meta = Binary {
|
|
||||||
do {
|
|
||||||
line = input.readUtf8Line()
|
|
||||||
writeUtf8String(line + "\r\n")
|
|
||||||
offset += line.encodeToByteArray().size.toUInt()
|
|
||||||
} while (!line.startsWith(SEPARATOR))
|
|
||||||
}.read {
|
|
||||||
readMetaFormat.readMeta(input)
|
|
||||||
|
|
||||||
}
|
|
||||||
return PartialEnvelope(meta, offset, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun readObject(input: Input): Envelope {
|
|
||||||
var line: String
|
|
||||||
do {
|
|
||||||
line = input.readUtf8Line() //?: error("Input does not contain front matter separator")
|
|
||||||
} while (!line.startsWith(SEPARATOR))
|
|
||||||
|
|
||||||
val readMetaFormat =
|
|
||||||
metaTypeRegex.matchEntire(line)?.groupValues?.first()
|
|
||||||
?.let { io.resolveMetaFormat(it) } ?: YamlMetaFormat
|
|
||||||
|
|
||||||
val meta = Binary {
|
|
||||||
do {
|
|
||||||
writeUtf8String(input.readUtf8Line() + "\r\n")
|
|
||||||
} while (!line.startsWith(SEPARATOR))
|
|
||||||
}.read {
|
|
||||||
readMetaFormat.readMeta(input)
|
|
||||||
}
|
|
||||||
val bytes = input.readByteArray()
|
|
||||||
val data = bytes.asBinary()
|
|
||||||
return SimpleEnvelope(meta, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun writeEnvelope(
|
|
||||||
output: Output,
|
|
||||||
envelope: Envelope,
|
|
||||||
metaFormatFactory: MetaFormatFactory,
|
|
||||||
formatMeta: Meta,
|
|
||||||
) {
|
|
||||||
val metaFormat = metaFormatFactory(formatMeta, this@FrontMatterEnvelopeFormat.io.context)
|
|
||||||
output.writeRawString("${hep.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.SEPARATOR}\r\n")
|
|
||||||
metaFormat.run { this.writeObject(output, envelope.meta) }
|
|
||||||
output.writeRawString("${hep.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.SEPARATOR}\r\n")
|
|
||||||
//Printing data
|
|
||||||
envelope.data?.let { data ->
|
|
||||||
output.writeBinary(data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun toMeta(): Meta = Meta {
|
|
||||||
NAME_KEY put name.toString()
|
|
||||||
META_KEY put meta
|
|
||||||
}
|
|
||||||
|
|
||||||
public companion object : EnvelopeFormatFactory {
|
|
||||||
public const val SEPARATOR: String = "---"
|
|
||||||
|
|
||||||
private val metaTypeRegex = "---(\\w*)\\s*".toRegex()
|
|
||||||
|
|
||||||
override fun invoke(meta: Meta, context: Context): EnvelopeFormat {
|
|
||||||
return FrontMatterEnvelopeFormat(context.io, meta)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun peekFormat(io: IOPlugin, input: Input): EnvelopeFormat? {
|
|
||||||
return input.preview {
|
|
||||||
val line = readUtf8Line()
|
|
||||||
return@preview if (line.startsWith("---")) {
|
|
||||||
invoke()
|
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private val default by lazy { invoke() }
|
|
||||||
|
|
||||||
override fun readPartial(input: Input): PartialEnvelope =
|
|
||||||
default.readPartial(input)
|
|
||||||
|
|
||||||
override fun writeEnvelope(
|
|
||||||
output: Output,
|
|
||||||
envelope: Envelope,
|
|
||||||
metaFormatFactory: MetaFormatFactory,
|
|
||||||
formatMeta: Meta,
|
|
||||||
): Unit = default.writeEnvelope(output, envelope, metaFormatFactory, formatMeta)
|
|
||||||
|
|
||||||
|
|
||||||
override fun readObject(input: Input): Envelope = default.readObject(input)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,123 @@
|
|||||||
|
package space.kscience.dataforge.io.yaml
|
||||||
|
|
||||||
|
import io.ktor.utils.io.core.Input
|
||||||
|
import io.ktor.utils.io.core.Output
|
||||||
|
import io.ktor.utils.io.core.readBytes
|
||||||
|
import io.ktor.utils.io.core.readUTF8Line
|
||||||
|
import space.kscience.dataforge.context.Context
|
||||||
|
import space.kscience.dataforge.io.*
|
||||||
|
import space.kscience.dataforge.io.IOFormat.Companion.META_KEY
|
||||||
|
import space.kscience.dataforge.io.IOFormat.Companion.NAME_KEY
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
|
||||||
|
@DFExperimental
|
||||||
|
public class FrontMatterEnvelopeFormat(
|
||||||
|
private val io: IOPlugin,
|
||||||
|
private val meta: Meta = Meta.EMPTY,
|
||||||
|
) : EnvelopeFormat {
|
||||||
|
|
||||||
|
override fun readPartial(input: Input): PartialEnvelope {
|
||||||
|
var line: String
|
||||||
|
var offset = 0u
|
||||||
|
do {
|
||||||
|
line = input.readUTF8Line() ?: error("Input does not contain front matter separator")
|
||||||
|
offset += line.encodeToByteArray().size.toUInt()
|
||||||
|
} while (!line.startsWith(space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.SEPARATOR))
|
||||||
|
|
||||||
|
val readMetaFormat =
|
||||||
|
space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.metaTypeRegex.matchEntire(line)?.groupValues?.first()
|
||||||
|
?.let { io.resolveMetaFormat(it) } ?: space.kscience.dataforge.io.yaml.YamlMetaFormat
|
||||||
|
|
||||||
|
//TODO replace by preview
|
||||||
|
val meta = Binary {
|
||||||
|
do {
|
||||||
|
line = input.readSafeUtf8Line()
|
||||||
|
writeUtf8String(line + "\r\n")
|
||||||
|
offset += line.encodeToByteArray().size.toUInt()
|
||||||
|
} while (!line.startsWith(space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.SEPARATOR))
|
||||||
|
}.read {
|
||||||
|
readMetaFormat.readMeta(input)
|
||||||
|
|
||||||
|
}
|
||||||
|
return PartialEnvelope(meta, offset, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun readObject(input: Input): Envelope {
|
||||||
|
var line: String
|
||||||
|
do {
|
||||||
|
line = input.readSafeUtf8Line() //?: error("Input does not contain front matter separator")
|
||||||
|
} while (!line.startsWith(space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.SEPARATOR))
|
||||||
|
|
||||||
|
val readMetaFormat =
|
||||||
|
space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.metaTypeRegex.matchEntire(line)?.groupValues?.first()
|
||||||
|
?.let { io.resolveMetaFormat(it) } ?: space.kscience.dataforge.io.yaml.YamlMetaFormat
|
||||||
|
|
||||||
|
val meta = Binary {
|
||||||
|
do {
|
||||||
|
writeUtf8String(input.readSafeUtf8Line() + "\r\n")
|
||||||
|
} while (!line.startsWith(space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.SEPARATOR))
|
||||||
|
}.read {
|
||||||
|
readMetaFormat.readMeta(input)
|
||||||
|
}
|
||||||
|
val bytes = input.readBytes()
|
||||||
|
val data = bytes.asBinary()
|
||||||
|
return SimpleEnvelope(meta, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun writeEnvelope(
|
||||||
|
output: Output,
|
||||||
|
envelope: Envelope,
|
||||||
|
metaFormatFactory: MetaFormatFactory,
|
||||||
|
formatMeta: Meta,
|
||||||
|
) {
|
||||||
|
val metaFormat = metaFormatFactory(formatMeta, this@FrontMatterEnvelopeFormat.io.context)
|
||||||
|
output.writeRawString("${space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.SEPARATOR}\r\n")
|
||||||
|
metaFormat.run { this.writeObject(output, envelope.meta) }
|
||||||
|
output.writeRawString("${space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.SEPARATOR}\r\n")
|
||||||
|
//Printing data
|
||||||
|
envelope.data?.let { data ->
|
||||||
|
output.writeBinary(data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toMeta(): Meta = Meta {
|
||||||
|
NAME_KEY put name.toString()
|
||||||
|
META_KEY put meta
|
||||||
|
}
|
||||||
|
|
||||||
|
public companion object : EnvelopeFormatFactory {
|
||||||
|
public const val SEPARATOR: String = "---"
|
||||||
|
|
||||||
|
private val metaTypeRegex = "---(\\w*)\\s*".toRegex()
|
||||||
|
|
||||||
|
override fun invoke(meta: Meta, context: Context): EnvelopeFormat {
|
||||||
|
return space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat(context.io, meta)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun peekFormat(io: IOPlugin, binary: Binary): EnvelopeFormat? = binary.read {
|
||||||
|
val line = readSafeUtf8Line()
|
||||||
|
return@read if (line.startsWith("---")) {
|
||||||
|
space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.invoke()
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val default by lazy { space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.invoke() }
|
||||||
|
|
||||||
|
override fun readPartial(input: Input): PartialEnvelope =
|
||||||
|
space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.default.readPartial(input)
|
||||||
|
|
||||||
|
override fun writeEnvelope(
|
||||||
|
output: Output,
|
||||||
|
envelope: Envelope,
|
||||||
|
metaFormatFactory: MetaFormatFactory,
|
||||||
|
formatMeta: Meta,
|
||||||
|
): Unit = space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.default.writeEnvelope(output, envelope, metaFormatFactory, formatMeta)
|
||||||
|
|
||||||
|
|
||||||
|
override fun readObject(input: Input): Envelope = space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.Companion.default.readObject(input)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,24 +1,24 @@
|
|||||||
package hep.dataforge.io.yaml
|
package space.kscience.dataforge.io.yaml
|
||||||
|
|
||||||
import hep.dataforge.context.Context
|
import io.ktor.utils.io.core.Input
|
||||||
import hep.dataforge.io.IOFormat.Companion.META_KEY
|
import io.ktor.utils.io.core.Output
|
||||||
import hep.dataforge.io.IOFormat.Companion.NAME_KEY
|
|
||||||
import hep.dataforge.io.MetaFormat
|
|
||||||
import hep.dataforge.io.MetaFormatFactory
|
|
||||||
import hep.dataforge.meta.*
|
|
||||||
import hep.dataforge.meta.descriptors.ItemDescriptor
|
|
||||||
import hep.dataforge.meta.descriptors.NodeDescriptor
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
|
||||||
import hep.dataforge.names.NameToken
|
|
||||||
import hep.dataforge.names.withIndex
|
|
||||||
import hep.dataforge.values.ListValue
|
|
||||||
import hep.dataforge.values.Null
|
|
||||||
import hep.dataforge.values.parseValue
|
|
||||||
import kotlinx.io.Input
|
|
||||||
import kotlinx.io.Output
|
|
||||||
import kotlinx.io.text.readUtf8String
|
|
||||||
import kotlinx.io.text.writeUtf8String
|
|
||||||
import net.mamoe.yamlkt.*
|
import net.mamoe.yamlkt.*
|
||||||
|
import space.kscience.dataforge.context.Context
|
||||||
|
import space.kscience.dataforge.io.IOFormat.Companion.META_KEY
|
||||||
|
import space.kscience.dataforge.io.IOFormat.Companion.NAME_KEY
|
||||||
|
import space.kscience.dataforge.io.MetaFormat
|
||||||
|
import space.kscience.dataforge.io.MetaFormatFactory
|
||||||
|
import space.kscience.dataforge.io.readUtf8String
|
||||||
|
import space.kscience.dataforge.io.writeUtf8String
|
||||||
|
import space.kscience.dataforge.meta.*
|
||||||
|
import space.kscience.dataforge.meta.descriptors.ItemDescriptor
|
||||||
|
import space.kscience.dataforge.meta.descriptors.NodeDescriptor
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
import space.kscience.dataforge.names.NameToken
|
||||||
|
import space.kscience.dataforge.names.withIndex
|
||||||
|
import space.kscience.dataforge.values.ListValue
|
||||||
|
import space.kscience.dataforge.values.Null
|
||||||
|
import space.kscience.dataforge.values.parseValue
|
||||||
|
|
||||||
public fun Meta.toYaml(): YamlMap {
|
public fun Meta.toYaml(): YamlMap {
|
||||||
val map: Map<String, Any?> = items.entries.associate { (key, item) ->
|
val map: Map<String, Any?> = items.entries.associate { (key, item) ->
|
||||||
@ -100,7 +100,7 @@ public class YamlMetaFormat(private val meta: Meta) : MetaFormat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun toMeta(): Meta = Meta {
|
override fun toMeta(): Meta = Meta {
|
||||||
NAME_KEY put FrontMatterEnvelopeFormat.name.toString()
|
NAME_KEY put space.kscience.dataforge.io.yaml.FrontMatterEnvelopeFormat.name.toString()
|
||||||
META_KEY put meta
|
META_KEY put meta
|
||||||
}
|
}
|
||||||
|
|
@ -1,11 +1,11 @@
|
|||||||
package hep.dataforge.io.yaml
|
package space.kscience.dataforge.io.yaml
|
||||||
|
|
||||||
import hep.dataforge.io.parse
|
import space.kscience.dataforge.io.parse
|
||||||
import hep.dataforge.io.toString
|
import space.kscience.dataforge.io.toString
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.meta.get
|
import space.kscience.dataforge.meta.get
|
||||||
import hep.dataforge.meta.seal
|
import space.kscience.dataforge.meta.seal
|
||||||
import hep.dataforge.misc.DFExperimental
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
@ -0,0 +1,74 @@
|
|||||||
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
|
import io.ktor.utils.io.core.*
|
||||||
|
import kotlin.math.min
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [Binary] represents a fixed-size multi-read byte block, which is not attached to the Input which was used to create it.
|
||||||
|
* The binary could be associated with a resource, but it should guarantee that when someone is trying to read the binary,
|
||||||
|
* this resource is re-acquired.
|
||||||
|
*/
|
||||||
|
public interface Binary {
|
||||||
|
|
||||||
|
public val size: Int
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read maximum of [atMost] bytes as input from the binary, starting at [offset]. The generated input is always closed
|
||||||
|
* when leaving scope, so it could not be leaked outside of scope of [block].
|
||||||
|
*/
|
||||||
|
public fun <R> read(offset: Int = 0, atMost: Int = size - offset, block: Input.() -> R): R
|
||||||
|
|
||||||
|
public companion object {
|
||||||
|
public val EMPTY: Binary = ByteArrayBinary(ByteArray(0))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class ByteArrayBinary(
|
||||||
|
internal val array: ByteArray,
|
||||||
|
internal val start: Int = 0,
|
||||||
|
override val size: Int = array.size - start,
|
||||||
|
) : Binary {
|
||||||
|
|
||||||
|
override fun <R> read(offset: Int, atMost: Int, block: Input.() -> R): R {
|
||||||
|
require(offset >= 0) { "Offset must be positive" }
|
||||||
|
require(offset < array.size) { "Offset $offset is larger than array size" }
|
||||||
|
val input = ByteReadPacket(
|
||||||
|
array,
|
||||||
|
offset + start,
|
||||||
|
min(atMost, size - offset)
|
||||||
|
)
|
||||||
|
return input.use(block)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun ByteArray.asBinary(): Binary = ByteArrayBinary(this)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Produce a [buildByteArray] representing an exact copy of this [Binary]
|
||||||
|
*/
|
||||||
|
public fun Binary.toByteArray(): ByteArray = if (this is ByteArrayBinary) {
|
||||||
|
array.copyOf() // TODO do we need to ensure data safety here?
|
||||||
|
} else {
|
||||||
|
read {
|
||||||
|
readBytes()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun Input.readBinary(size: Int): Binary {
|
||||||
|
val array = readBytes(size)
|
||||||
|
return ByteArrayBinary(array)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Direct write of binary to the output. Returns the number of bytes written
|
||||||
|
*/
|
||||||
|
public fun Output.writeBinary(binary: Binary): Int {
|
||||||
|
return if (binary is ByteArrayBinary) {
|
||||||
|
writeFully(binary.array, binary.start, binary.start + binary.size)
|
||||||
|
binary.size
|
||||||
|
} else {
|
||||||
|
binary.read {
|
||||||
|
copyTo(this@writeBinary).toInt()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,12 +1,10 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.context.Context
|
import io.ktor.utils.io.core.*
|
||||||
import hep.dataforge.meta.*
|
import space.kscience.dataforge.context.Context
|
||||||
import hep.dataforge.meta.descriptors.NodeDescriptor
|
import space.kscience.dataforge.meta.*
|
||||||
import hep.dataforge.values.*
|
import space.kscience.dataforge.meta.descriptors.NodeDescriptor
|
||||||
import kotlinx.io.*
|
import space.kscience.dataforge.values.*
|
||||||
import kotlinx.io.text.readUtf8String
|
|
||||||
import kotlinx.io.text.writeUtf8String
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A DataForge-specific simplified binary format for meta
|
* A DataForge-specific simplified binary format for meta
|
||||||
@ -26,7 +24,7 @@ public object BinaryMetaFormat : MetaFormat, MetaFormatFactory {
|
|||||||
|
|
||||||
private fun Output.writeString(str: String) {
|
private fun Output.writeString(str: String) {
|
||||||
writeInt(str.length)
|
writeInt(str.length)
|
||||||
writeUtf8String(str)
|
writeFully(str.encodeToByteArray())
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun Output.writeValue(value: Value): Unit = when (value.type) {
|
public fun Output.writeValue(value: Value): Unit = when (value.type) {
|
||||||
@ -76,9 +74,9 @@ public object BinaryMetaFormat : MetaFormat, MetaFormatFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun writeMeta(
|
override fun writeMeta(
|
||||||
output: kotlinx.io.Output,
|
output: Output,
|
||||||
meta: hep.dataforge.meta.Meta,
|
meta: Meta,
|
||||||
descriptor: hep.dataforge.meta.descriptors.NodeDescriptor?,
|
descriptor: space.kscience.dataforge.meta.descriptors.NodeDescriptor?,
|
||||||
) {
|
) {
|
||||||
output.writeChar('M')
|
output.writeChar('M')
|
||||||
output.writeInt(meta.items.size)
|
output.writeInt(meta.items.size)
|
||||||
@ -97,7 +95,8 @@ public object BinaryMetaFormat : MetaFormat, MetaFormatFactory {
|
|||||||
|
|
||||||
private fun Input.readString(): String {
|
private fun Input.readString(): String {
|
||||||
val length = readInt()
|
val length = readInt()
|
||||||
return readUtf8String(length)
|
val array = readBytes(length)
|
||||||
|
return array.decodeToString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
@ -1,6 +1,6 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.misc.DFExperimental
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A fire-and-forget consumer of messages
|
* A fire-and-forget consumer of messages
|
@ -1,13 +1,12 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.meta.Laminate
|
import space.kscience.dataforge.meta.Laminate
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.meta.get
|
import space.kscience.dataforge.meta.get
|
||||||
import hep.dataforge.meta.string
|
import space.kscience.dataforge.meta.string
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import hep.dataforge.names.asName
|
import space.kscience.dataforge.names.asName
|
||||||
import hep.dataforge.names.plus
|
import space.kscience.dataforge.names.plus
|
||||||
import kotlinx.io.Binary
|
|
||||||
|
|
||||||
public interface Envelope {
|
public interface Envelope {
|
||||||
public val meta: Meta
|
public val meta: Meta
|
@ -1,7 +1,7 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.meta.*
|
import io.ktor.utils.io.core.Output
|
||||||
import kotlinx.io.*
|
import space.kscience.dataforge.meta.*
|
||||||
|
|
||||||
public class EnvelopeBuilder : Envelope {
|
public class EnvelopeBuilder : Envelope {
|
||||||
private val metaBuilder = MetaBuilder()
|
private val metaBuilder = MetaBuilder()
|
||||||
@ -33,11 +33,8 @@ public class EnvelopeBuilder : Envelope {
|
|||||||
/**
|
/**
|
||||||
* Construct a data binary from given builder
|
* Construct a data binary from given builder
|
||||||
*/
|
*/
|
||||||
@OptIn(ExperimentalIoApi::class)
|
|
||||||
public fun data(block: Output.() -> Unit) {
|
public fun data(block: Output.() -> Unit) {
|
||||||
val arrayBuilder = ByteArrayOutput()
|
data = buildByteArray { block() }.asBinary()
|
||||||
arrayBuilder.block()
|
|
||||||
data = arrayBuilder.toByteArray().asBinary()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun seal(): Envelope = SimpleEnvelope(metaBuilder.seal(), data)
|
public fun seal(): Envelope = SimpleEnvelope(metaBuilder.seal(), data)
|
@ -1,13 +1,13 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.context.Context
|
import io.ktor.utils.io.core.Input
|
||||||
import hep.dataforge.io.EnvelopeFormatFactory.Companion.ENVELOPE_FORMAT_TYPE
|
import io.ktor.utils.io.core.Output
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.context.Context
|
||||||
import hep.dataforge.misc.Type
|
import space.kscience.dataforge.io.EnvelopeFormatFactory.Companion.ENVELOPE_FORMAT_TYPE
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.names.asName
|
import space.kscience.dataforge.misc.Type
|
||||||
import kotlinx.io.Input
|
import space.kscience.dataforge.names.Name
|
||||||
import kotlinx.io.Output
|
import space.kscience.dataforge.names.asName
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ public interface EnvelopeFormatFactory : IOFormatFactory<Envelope>, EnvelopeForm
|
|||||||
* Try to infer specific format from input and return null if the attempt is failed.
|
* Try to infer specific format from input and return null if the attempt is failed.
|
||||||
* This method does **not** return Input into initial state.
|
* This method does **not** return Input into initial state.
|
||||||
*/
|
*/
|
||||||
public fun peekFormat(io: IOPlugin, input: Input): EnvelopeFormat?
|
public fun peekFormat(io: IOPlugin, binary: Binary): EnvelopeFormat?
|
||||||
|
|
||||||
public companion object {
|
public companion object {
|
||||||
public const val ENVELOPE_FORMAT_TYPE: String = "io.format.envelope"
|
public const val ENVELOPE_FORMAT_TYPE: String = "io.format.envelope"
|
@ -1,18 +1,16 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.io.Envelope.Companion.ENVELOPE_NODE_KEY
|
import space.kscience.dataforge.io.Envelope.Companion.ENVELOPE_NODE_KEY
|
||||||
import hep.dataforge.io.PartDescriptor.Companion.DEFAULT_MULTIPART_DATA_SEPARATOR
|
import space.kscience.dataforge.io.PartDescriptor.Companion.DEFAULT_MULTIPART_DATA_SEPARATOR
|
||||||
import hep.dataforge.io.PartDescriptor.Companion.MULTIPART_DATA_TYPE
|
import space.kscience.dataforge.io.PartDescriptor.Companion.MULTIPART_DATA_TYPE
|
||||||
import hep.dataforge.io.PartDescriptor.Companion.MULTIPART_KEY
|
import space.kscience.dataforge.io.PartDescriptor.Companion.MULTIPART_KEY
|
||||||
import hep.dataforge.io.PartDescriptor.Companion.PARTS_KEY
|
import space.kscience.dataforge.io.PartDescriptor.Companion.PARTS_KEY
|
||||||
import hep.dataforge.io.PartDescriptor.Companion.PART_FORMAT_KEY
|
import space.kscience.dataforge.io.PartDescriptor.Companion.PART_FORMAT_KEY
|
||||||
import hep.dataforge.io.PartDescriptor.Companion.SEPARATOR_KEY
|
import space.kscience.dataforge.io.PartDescriptor.Companion.SEPARATOR_KEY
|
||||||
import hep.dataforge.meta.*
|
import space.kscience.dataforge.meta.*
|
||||||
import hep.dataforge.names.asName
|
import space.kscience.dataforge.names.asName
|
||||||
import hep.dataforge.names.plus
|
import space.kscience.dataforge.names.plus
|
||||||
import hep.dataforge.names.toName
|
import space.kscience.dataforge.names.toName
|
||||||
import kotlinx.io.Binary
|
|
||||||
import kotlinx.io.writeBinary
|
|
||||||
|
|
||||||
private class PartDescriptor : Scheme() {
|
private class PartDescriptor : Scheme() {
|
||||||
var offset by int(0)
|
var offset by int(0)
|
@ -1,20 +1,18 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.context.Context
|
import io.ktor.utils.io.core.*
|
||||||
import hep.dataforge.context.Factory
|
import space.kscience.dataforge.context.Context
|
||||||
import hep.dataforge.io.IOFormat.Companion.NAME_KEY
|
import space.kscience.dataforge.context.Factory
|
||||||
import hep.dataforge.io.IOFormatFactory.Companion.IO_FORMAT_TYPE
|
import space.kscience.dataforge.io.IOFormat.Companion.NAME_KEY
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.io.IOFormatFactory.Companion.IO_FORMAT_TYPE
|
||||||
import hep.dataforge.meta.MetaItemValue
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.meta.MetaRepr
|
import space.kscience.dataforge.meta.MetaItemValue
|
||||||
import hep.dataforge.misc.Named
|
import space.kscience.dataforge.meta.MetaRepr
|
||||||
import hep.dataforge.misc.Type
|
import space.kscience.dataforge.misc.Named
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.misc.Type
|
||||||
import hep.dataforge.names.asName
|
import space.kscience.dataforge.names.Name
|
||||||
import hep.dataforge.values.Value
|
import space.kscience.dataforge.names.asName
|
||||||
import kotlinx.io.*
|
import space.kscience.dataforge.values.Value
|
||||||
import kotlinx.io.buffer.Buffer
|
|
||||||
import kotlinx.io.pool.ObjectPool
|
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
|
|
||||||
@ -35,6 +33,10 @@ public interface IOFormat<T : Any> : MetaRepr {
|
|||||||
|
|
||||||
public fun <T : Any> Input.readWith(format: IOFormat<T>): T = format.readObject(this@readWith)
|
public fun <T : Any> Input.readWith(format: IOFormat<T>): T = format.readObject(this@readWith)
|
||||||
|
|
||||||
|
public fun <T: Any> IOFormat<T>.readObject(binary: Binary): T = binary.read {
|
||||||
|
readObject(this)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read given binary as object using given format
|
* Read given binary as object using given format
|
||||||
*/
|
*/
|
||||||
@ -73,15 +75,15 @@ public inline fun <reified T : Any> IOFormat.Companion.listOf(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun ObjectPool<Buffer>.fill(block: Buffer.() -> Unit): Buffer {
|
//public fun ObjectPool<Buffer>.fill(block: Buffer.() -> Unit): Buffer {
|
||||||
val buffer = borrow()
|
// val buffer = borrow()
|
||||||
return try {
|
// return try {
|
||||||
buffer.apply(block)
|
// buffer.apply(block)
|
||||||
} catch (ex: Exception) {
|
// } catch (ex: Exception) {
|
||||||
//recycle(buffer)
|
// //recycle(buffer)
|
||||||
throw ex
|
// throw ex
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
@Type(IO_FORMAT_TYPE)
|
@Type(IO_FORMAT_TYPE)
|
||||||
public interface IOFormatFactory<T : Any> : Factory<IOFormat<T>>, Named, MetaRepr {
|
public interface IOFormatFactory<T : Any> : Factory<IOFormat<T>>, Named, MetaRepr {
|
@ -1,14 +1,14 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.context.*
|
import space.kscience.dataforge.context.*
|
||||||
import hep.dataforge.io.EnvelopeFormatFactory.Companion.ENVELOPE_FORMAT_TYPE
|
import space.kscience.dataforge.io.EnvelopeFormatFactory.Companion.ENVELOPE_FORMAT_TYPE
|
||||||
import hep.dataforge.io.IOFormat.Companion.META_KEY
|
import space.kscience.dataforge.io.IOFormat.Companion.META_KEY
|
||||||
import hep.dataforge.io.IOFormat.Companion.NAME_KEY
|
import space.kscience.dataforge.io.IOFormat.Companion.NAME_KEY
|
||||||
import hep.dataforge.io.IOFormatFactory.Companion.IO_FORMAT_TYPE
|
import space.kscience.dataforge.io.IOFormatFactory.Companion.IO_FORMAT_TYPE
|
||||||
import hep.dataforge.io.MetaFormatFactory.Companion.META_FORMAT_TYPE
|
import space.kscience.dataforge.io.MetaFormatFactory.Companion.META_FORMAT_TYPE
|
||||||
import hep.dataforge.meta.*
|
import space.kscience.dataforge.meta.*
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import hep.dataforge.names.toName
|
import space.kscience.dataforge.names.toName
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
public class IOPlugin(meta: Meta) : AbstractPlugin(meta) {
|
public class IOPlugin(meta: Meta) : AbstractPlugin(meta) {
|
@ -1,21 +1,19 @@
|
|||||||
@file:Suppress("UNUSED_PARAMETER")
|
@file:Suppress("UNUSED_PARAMETER")
|
||||||
|
|
||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
|
|
||||||
import hep.dataforge.context.Context
|
import io.ktor.utils.io.core.Input
|
||||||
import hep.dataforge.io.IOFormat.Companion.NAME_KEY
|
import io.ktor.utils.io.core.Output
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.meta.descriptors.NodeDescriptor
|
|
||||||
import hep.dataforge.meta.node
|
|
||||||
import hep.dataforge.meta.toJson
|
|
||||||
import hep.dataforge.meta.toMetaItem
|
|
||||||
import kotlinx.io.Input
|
|
||||||
import kotlinx.io.Output
|
|
||||||
import kotlinx.io.text.readUtf8String
|
|
||||||
import kotlinx.io.text.writeUtf8String
|
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import kotlinx.serialization.json.JsonObject
|
import kotlinx.serialization.json.JsonObject
|
||||||
|
import space.kscience.dataforge.context.Context
|
||||||
|
import space.kscience.dataforge.io.IOFormat.Companion.NAME_KEY
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.meta.descriptors.NodeDescriptor
|
||||||
|
import space.kscience.dataforge.meta.node
|
||||||
|
import space.kscience.dataforge.meta.toJson
|
||||||
|
import space.kscience.dataforge.meta.toMetaItem
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
|
|
@ -1,17 +1,17 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.context.Context
|
import io.ktor.utils.io.core.ByteReadPacket
|
||||||
import hep.dataforge.io.MetaFormatFactory.Companion.META_FORMAT_TYPE
|
import io.ktor.utils.io.core.Input
|
||||||
import hep.dataforge.meta.Meta
|
import io.ktor.utils.io.core.Output
|
||||||
import hep.dataforge.meta.descriptors.NodeDescriptor
|
import io.ktor.utils.io.core.use
|
||||||
import hep.dataforge.misc.Type
|
import space.kscience.dataforge.context.Context
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.io.MetaFormatFactory.Companion.META_FORMAT_TYPE
|
||||||
import hep.dataforge.names.asName
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.names.plus
|
import space.kscience.dataforge.meta.descriptors.NodeDescriptor
|
||||||
import kotlinx.io.ByteArrayInput
|
import space.kscience.dataforge.misc.Type
|
||||||
import kotlinx.io.Input
|
import space.kscience.dataforge.names.Name
|
||||||
import kotlinx.io.Output
|
import space.kscience.dataforge.names.asName
|
||||||
import kotlinx.io.use
|
import space.kscience.dataforge.names.plus
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
|
|
||||||
@ -54,13 +54,15 @@ public interface MetaFormatFactory : IOFormatFactory<Meta>, MetaFormat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public fun Meta.toString(format: MetaFormat): String = buildByteArray {
|
public fun Meta.toString(format: MetaFormat): String = buildByteArray {
|
||||||
format.run { writeObject(this@buildByteArray, this@toString) }
|
format.run {
|
||||||
|
writeObject(this@buildByteArray, this@toString)
|
||||||
|
}
|
||||||
}.decodeToString()
|
}.decodeToString()
|
||||||
|
|
||||||
public fun Meta.toString(formatFactory: MetaFormatFactory): String = toString(formatFactory())
|
public fun Meta.toString(formatFactory: MetaFormatFactory): String = toString(formatFactory())
|
||||||
|
|
||||||
public fun MetaFormat.parse(str: String): Meta {
|
public fun MetaFormat.parse(str: String): Meta {
|
||||||
return ByteArrayInput(str.encodeToByteArray()).use { readObject(it) }
|
return ByteReadPacket(str.encodeToByteArray()).use { readObject(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun MetaFormatFactory.parse(str: String, formatMeta: Meta): Meta = invoke(formatMeta).parse(str)
|
public fun MetaFormatFactory.parse(str: String, formatMeta: Meta): Meta = invoke(formatMeta).parse(str)
|
@ -1,4 +1,4 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An object that could respond to external messages asynchronously
|
* An object that could respond to external messages asynchronously
|
@ -1,16 +1,16 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.context.Context
|
import io.ktor.utils.io.core.*
|
||||||
import hep.dataforge.io.IOFormat.Companion.META_KEY
|
import space.kscience.dataforge.context.Context
|
||||||
import hep.dataforge.io.IOFormat.Companion.NAME_KEY
|
import space.kscience.dataforge.io.IOFormat.Companion.META_KEY
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.io.IOFormat.Companion.NAME_KEY
|
||||||
import hep.dataforge.meta.enum
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.meta.get
|
import space.kscience.dataforge.meta.enum
|
||||||
import hep.dataforge.meta.string
|
import space.kscience.dataforge.meta.get
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.meta.string
|
||||||
import hep.dataforge.names.plus
|
import space.kscience.dataforge.names.Name
|
||||||
import hep.dataforge.names.toName
|
import space.kscience.dataforge.names.plus
|
||||||
import kotlinx.io.*
|
import space.kscience.dataforge.names.toName
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A streaming-friendly envelope format with a short binary tag.
|
* A streaming-friendly envelope format with a short binary tag.
|
||||||
@ -57,7 +57,6 @@ public class TaggedEnvelopeFormat(
|
|||||||
envelope.data?.let {
|
envelope.data?.let {
|
||||||
output.writeBinary(it)
|
output.writeBinary(it)
|
||||||
}
|
}
|
||||||
output.flush()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -72,7 +71,9 @@ public class TaggedEnvelopeFormat(
|
|||||||
val metaFormat = io.resolveMetaFormat(tag.metaFormatKey)
|
val metaFormat = io.resolveMetaFormat(tag.metaFormatKey)
|
||||||
?: error("Meta format with key ${tag.metaFormatKey} not found")
|
?: error("Meta format with key ${tag.metaFormatKey} not found")
|
||||||
|
|
||||||
val meta: Meta = metaFormat.readObject(input.limit(tag.metaSize.toInt()))
|
val metaBinary = input.readBinary(tag.metaSize.toInt())
|
||||||
|
|
||||||
|
val meta: Meta = metaFormat.readObject(metaBinary)
|
||||||
|
|
||||||
val data = input.readBinary(tag.dataSize.toInt())
|
val data = input.readBinary(tag.dataSize.toInt())
|
||||||
|
|
||||||
@ -85,7 +86,9 @@ public class TaggedEnvelopeFormat(
|
|||||||
val metaFormat = io.resolveMetaFormat(tag.metaFormatKey)
|
val metaFormat = io.resolveMetaFormat(tag.metaFormatKey)
|
||||||
?: error("Meta format with key ${tag.metaFormatKey} not found")
|
?: error("Meta format with key ${tag.metaFormatKey} not found")
|
||||||
|
|
||||||
val meta: Meta = metaFormat.readObject(input.limit(tag.metaSize.toInt()))
|
val metaBinary = input.readBinary(tag.metaSize.toInt())
|
||||||
|
|
||||||
|
val meta: Meta = metaFormat.readObject(metaBinary)
|
||||||
|
|
||||||
|
|
||||||
return PartialEnvelope(meta, version.tagSize + tag.metaSize, tag.dataSize)
|
return PartialEnvelope(meta, version.tagSize + tag.metaSize, tag.dataSize)
|
||||||
@ -143,11 +146,11 @@ public class TaggedEnvelopeFormat(
|
|||||||
return Tag(metaFormatKey, metaLength, dataLength)
|
return Tag(metaFormatKey, metaLength, dataLength)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun peekFormat(io: IOPlugin, input: Input): EnvelopeFormat? {
|
override fun peekFormat(io: IOPlugin, binary: Binary): EnvelopeFormat? {
|
||||||
return try {
|
return try {
|
||||||
input.preview {
|
binary.read{
|
||||||
val header = readRawString(6)
|
val header = readRawString(6)
|
||||||
return@preview when (header.substring(2..5)) {
|
return@read when (header.substring(2..5)) {
|
||||||
VERSION.DF02.name -> TaggedEnvelopeFormat(io, VERSION.DF02)
|
VERSION.DF02.name -> TaggedEnvelopeFormat(io, VERSION.DF02)
|
||||||
VERSION.DF03.name -> TaggedEnvelopeFormat(io, VERSION.DF03)
|
VERSION.DF03.name -> TaggedEnvelopeFormat(io, VERSION.DF03)
|
||||||
else -> null
|
else -> null
|
@ -1,17 +1,15 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.context.Context
|
import io.ktor.utils.io.core.*
|
||||||
import hep.dataforge.io.IOFormat.Companion.META_KEY
|
import space.kscience.dataforge.context.Context
|
||||||
import hep.dataforge.io.IOFormat.Companion.NAME_KEY
|
import space.kscience.dataforge.io.IOFormat.Companion.META_KEY
|
||||||
import hep.dataforge.meta.Meta
|
import space.kscience.dataforge.io.IOFormat.Companion.NAME_KEY
|
||||||
import hep.dataforge.meta.get
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.meta.isEmpty
|
import space.kscience.dataforge.meta.get
|
||||||
import hep.dataforge.meta.string
|
import space.kscience.dataforge.meta.isEmpty
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.meta.string
|
||||||
import hep.dataforge.names.asName
|
import space.kscience.dataforge.names.Name
|
||||||
import kotlinx.io.*
|
import space.kscience.dataforge.names.asName
|
||||||
import kotlinx.io.text.readUtf8Line
|
|
||||||
import kotlinx.io.text.writeUtf8String
|
|
||||||
import kotlin.collections.set
|
import kotlin.collections.set
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,7 +25,7 @@ public class TaglessEnvelopeFormat(
|
|||||||
private val dataStart = meta[DATA_START_PROPERTY].string ?: DEFAULT_DATA_START
|
private val dataStart = meta[DATA_START_PROPERTY].string ?: DEFAULT_DATA_START
|
||||||
|
|
||||||
private fun Output.writeProperty(key: String, value: Any) {
|
private fun Output.writeProperty(key: String, value: Any) {
|
||||||
writeUtf8String("#? $key: $value;\r\n")
|
writeFully("#? $key: $value;\r\n".encodeToByteArray())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun writeEnvelope(
|
override fun writeEnvelope(
|
||||||
@ -69,7 +67,7 @@ public class TaglessEnvelopeFormat(
|
|||||||
override fun readObject(input: Input): Envelope {
|
override fun readObject(input: Input): Envelope {
|
||||||
var line: String
|
var line: String
|
||||||
do {
|
do {
|
||||||
line = input.readUtf8Line() // ?: error("Input does not contain tagless envelope header")
|
line = input.readSafeUtf8Line() // ?: error("Input does not contain tagless envelope header")
|
||||||
} while (!line.startsWith(TAGLESS_ENVELOPE_HEADER))
|
} while (!line.startsWith(TAGLESS_ENVELOPE_HEADER))
|
||||||
val properties = HashMap<String, String>()
|
val properties = HashMap<String, String>()
|
||||||
|
|
||||||
@ -82,8 +80,8 @@ public class TaglessEnvelopeFormat(
|
|||||||
properties[key] = value
|
properties[key] = value
|
||||||
}
|
}
|
||||||
//If can't read line, return envelope without data
|
//If can't read line, return envelope without data
|
||||||
if (input.exhausted()) return SimpleEnvelope(Meta.EMPTY, null)
|
if (input.endOfInput) return SimpleEnvelope(Meta.EMPTY, null)
|
||||||
line = input.readUtf8Line()
|
line = input.readSafeUtf8Line()
|
||||||
}
|
}
|
||||||
|
|
||||||
var meta: Meta = Meta.EMPTY
|
var meta: Meta = Meta.EMPTY
|
||||||
@ -92,7 +90,7 @@ public class TaglessEnvelopeFormat(
|
|||||||
val metaFormat = properties[META_TYPE_PROPERTY]?.let { io.resolveMetaFormat(it) } ?: JsonMetaFormat
|
val metaFormat = properties[META_TYPE_PROPERTY]?.let { io.resolveMetaFormat(it) } ?: JsonMetaFormat
|
||||||
val metaSize = properties[META_LENGTH_PROPERTY]?.toInt()
|
val metaSize = properties[META_LENGTH_PROPERTY]?.toInt()
|
||||||
meta = if (metaSize != null) {
|
meta = if (metaSize != null) {
|
||||||
metaFormat.readObject(input.limit(metaSize))
|
metaFormat.readObject(input.readBinary(metaSize))
|
||||||
} else {
|
} else {
|
||||||
metaFormat.readObject(input)
|
metaFormat.readObject(input)
|
||||||
}
|
}
|
||||||
@ -100,14 +98,14 @@ public class TaglessEnvelopeFormat(
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
try {
|
try {
|
||||||
line = input.readUtf8Line()
|
line = input.readSafeUtf8Line()
|
||||||
} catch (ex: EOFException) {
|
} catch (ex: EOFException) {
|
||||||
//returning an Envelope without data if end of input is reached
|
//returning an Envelope without data if end of input is reached
|
||||||
return SimpleEnvelope(meta, null)
|
return SimpleEnvelope(meta, null)
|
||||||
}
|
}
|
||||||
} while (!line.startsWith(dataStart))
|
} while (!line.startsWith(dataStart))
|
||||||
|
|
||||||
val data: Binary? = if (properties.containsKey(DATA_LENGTH_PROPERTY)) {
|
val data: Binary = if (properties.containsKey(DATA_LENGTH_PROPERTY)) {
|
||||||
input.readBinary(properties[DATA_LENGTH_PROPERTY]!!.toInt())
|
input.readBinary(properties[DATA_LENGTH_PROPERTY]!!.toInt())
|
||||||
// val bytes = ByteArray(properties[DATA_LENGTH_PROPERTY]!!.toInt())
|
// val bytes = ByteArray(properties[DATA_LENGTH_PROPERTY]!!.toInt())
|
||||||
// readByteArray(bytes)
|
// readByteArray(bytes)
|
||||||
@ -125,7 +123,7 @@ public class TaglessEnvelopeFormat(
|
|||||||
var offset = 0u
|
var offset = 0u
|
||||||
var line: String
|
var line: String
|
||||||
do {
|
do {
|
||||||
line = input.readUtf8Line()// ?: error("Input does not contain tagless envelope header")
|
line = input.readSafeUtf8Line()// ?: error("Input does not contain tagless envelope header")
|
||||||
offset += line.encodeToByteArray().size.toUInt()
|
offset += line.encodeToByteArray().size.toUInt()
|
||||||
} while (!line.startsWith(TAGLESS_ENVELOPE_HEADER))
|
} while (!line.startsWith(TAGLESS_ENVELOPE_HEADER))
|
||||||
val properties = HashMap<String, String>()
|
val properties = HashMap<String, String>()
|
||||||
@ -139,7 +137,7 @@ public class TaglessEnvelopeFormat(
|
|||||||
properties[key] = value
|
properties[key] = value
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
line = input.readUtf8Line()
|
line = input.readSafeUtf8Line()
|
||||||
offset += line.encodeToByteArray().size.toUInt()
|
offset += line.encodeToByteArray().size.toUInt()
|
||||||
} catch (ex: EOFException) {
|
} catch (ex: EOFException) {
|
||||||
return PartialEnvelope(Meta.EMPTY, offset.toUInt(), 0.toULong())
|
return PartialEnvelope(Meta.EMPTY, offset.toUInt(), 0.toULong())
|
||||||
@ -153,14 +151,14 @@ public class TaglessEnvelopeFormat(
|
|||||||
val metaSize = properties[META_LENGTH_PROPERTY]?.toInt()
|
val metaSize = properties[META_LENGTH_PROPERTY]?.toInt()
|
||||||
meta = if (metaSize != null) {
|
meta = if (metaSize != null) {
|
||||||
offset += metaSize.toUInt()
|
offset += metaSize.toUInt()
|
||||||
metaFormat.readObject(input.limit(metaSize))
|
metaFormat.readObject(input.readBinary(metaSize))
|
||||||
} else {
|
} else {
|
||||||
error("Can't partially read an envelope with undefined meta size")
|
error("Can't partially read an envelope with undefined meta size")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
line = input.readUtf8Line() //?: return PartialEnvelope(Meta.EMPTY, offset.toUInt(), 0.toULong())
|
line = input.readSafeUtf8Line() //?: return PartialEnvelope(Meta.EMPTY, offset.toUInt(), 0.toULong())
|
||||||
offset += line.encodeToByteArray().size.toUInt()
|
offset += line.encodeToByteArray().size.toUInt()
|
||||||
//returning an Envelope without data if end of input is reached
|
//returning an Envelope without data if end of input is reached
|
||||||
} while (!line.startsWith(dataStart))
|
} while (!line.startsWith(dataStart))
|
||||||
@ -220,11 +218,11 @@ public class TaglessEnvelopeFormat(
|
|||||||
|
|
||||||
override fun readObject(input: Input): Envelope = default.readObject(input)
|
override fun readObject(input: Input): Envelope = default.readObject(input)
|
||||||
|
|
||||||
override fun peekFormat(io: IOPlugin, input: Input): EnvelopeFormat? {
|
override fun peekFormat(io: IOPlugin, binary: Binary): EnvelopeFormat? {
|
||||||
return try {
|
return try {
|
||||||
input.preview {
|
binary.read {
|
||||||
val string = readRawString(TAGLESS_ENVELOPE_HEADER.length)
|
val string = readRawString(TAGLESS_ENVELOPE_HEADER.length)
|
||||||
return@preview if (string == TAGLESS_ENVELOPE_HEADER) {
|
return@read if (string == TAGLESS_ENVELOPE_HEADER) {
|
||||||
TaglessEnvelopeFormat(io)
|
TaglessEnvelopeFormat(io)
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
@ -1,21 +1,33 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import kotlinx.io.*
|
import io.ktor.utils.io.charsets.Charsets
|
||||||
|
import io.ktor.utils.io.charsets.decodeExactBytes
|
||||||
|
import io.ktor.utils.io.core.*
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
public fun Output.writeRawString(str: String) {
|
public fun Output.writeRawString(str: String) {
|
||||||
str.forEach { writeByte(it.toByte()) }
|
writeFully(str.toByteArray(Charsets.ISO_8859_1))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public fun Output.writeUtf8String(str: String) {
|
||||||
|
writeFully(str.encodeToByteArray())
|
||||||
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalIoApi::class)
|
||||||
public fun Input.readRawString(size: Int): String {
|
public fun Input.readRawString(size: Int): String {
|
||||||
val array = CharArray(size) { readByte().toChar() }
|
return Charsets.ISO_8859_1.newDecoder().decodeExactBytes(this, size)
|
||||||
return array.concatToString()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public inline fun buildByteArray(expectedSize: Int = 16, block: Output.() -> Unit): ByteArray =
|
public fun Input.readUtf8String(): String = readBytes().decodeToString()
|
||||||
ByteArrayOutput(expectedSize).apply(block).toByteArray()
|
|
||||||
|
public fun Input.readSafeUtf8Line(): String = readUTF8Line() ?: error("Line not found")
|
||||||
|
|
||||||
|
public inline fun buildByteArray(expectedSize: Int = 16, block: Output.() -> Unit): ByteArray {
|
||||||
|
val builder = BytePacketBuilder(expectedSize)
|
||||||
|
builder.block()
|
||||||
|
return builder.build().readBytes()
|
||||||
|
}
|
||||||
|
|
||||||
@Suppress("FunctionName")
|
|
||||||
public inline fun Binary(expectedSize: Int = 16, block: Output.() -> Unit): Binary =
|
public inline fun Binary(expectedSize: Int = 16, block: Output.() -> Unit): Binary =
|
||||||
buildByteArray(expectedSize, block).asBinary()
|
buildByteArray(expectedSize, block).asBinary()
|
||||||
|
|
@ -1,7 +0,0 @@
|
|||||||
package hep.dataforge.io
|
|
||||||
|
|
||||||
import kotlinx.io.ByteArrayInput
|
|
||||||
import kotlinx.io.use
|
|
||||||
|
|
||||||
fun <T : Any> IOFormat<T>.writeToByteArray(obj: T): ByteArray = buildByteArray { writeObject(this, obj) }
|
|
||||||
fun <T : Any> IOFormat<T>.readFromByteArray(array: ByteArray): T = ByteArrayInput(array).use { readObject(it) }
|
|
@ -1,8 +1,6 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import kotlinx.io.asBinary
|
import io.ktor.utils.io.core.readInt
|
||||||
import kotlinx.io.readByte
|
|
||||||
import kotlinx.io.readInt
|
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import kotlinx.io.readDouble
|
import io.ktor.utils.io.core.readDouble
|
||||||
import kotlinx.io.writeDouble
|
import io.ktor.utils.io.core.writeDouble
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
@ -0,0 +1,17 @@
|
|||||||
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
|
import io.ktor.utils.io.core.ByteReadPacket
|
||||||
|
import io.ktor.utils.io.core.readBytes
|
||||||
|
import kotlin.test.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
|
class IOTest {
|
||||||
|
@Test
|
||||||
|
fun readBytes() {
|
||||||
|
val bytes = ByteArray(8) { it.toByte() }
|
||||||
|
val input = ByteReadPacket(bytes)
|
||||||
|
@Suppress("UNUSED_VARIABLE") val first = input.readBytes(4)
|
||||||
|
val second = input.readBytes(4)
|
||||||
|
assertEquals(4.toByte(), second[0])
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +1,10 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.meta.*
|
|
||||||
import hep.dataforge.meta.JsonMeta.Companion.JSON_ARRAY_KEY
|
|
||||||
import hep.dataforge.values.ListValue
|
|
||||||
import hep.dataforge.values.number
|
|
||||||
import kotlinx.io.asBinary
|
|
||||||
import kotlinx.serialization.json.*
|
import kotlinx.serialization.json.*
|
||||||
|
import space.kscience.dataforge.meta.*
|
||||||
|
import space.kscience.dataforge.meta.JsonMeta.Companion.JSON_ARRAY_KEY
|
||||||
|
import space.kscience.dataforge.values.ListValue
|
||||||
|
import space.kscience.dataforge.values.number
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
@ -1,13 +1,13 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
|
||||||
import hep.dataforge.meta.MetaSerializer
|
|
||||||
import hep.dataforge.meta.TypedMetaItem
|
|
||||||
import hep.dataforge.names.Name
|
|
||||||
import hep.dataforge.names.toName
|
|
||||||
import kotlinx.serialization.ExperimentalSerializationApi
|
import kotlinx.serialization.ExperimentalSerializationApi
|
||||||
import kotlinx.serialization.cbor.Cbor
|
import kotlinx.serialization.cbor.Cbor
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import space.kscience.dataforge.meta.MetaSerializer
|
||||||
|
import space.kscience.dataforge.meta.TypedMetaItem
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import space.kscience.dataforge.names.toName
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
@ -1,10 +1,9 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.context.Global
|
import space.kscience.dataforge.context.Global
|
||||||
import hep.dataforge.meta.get
|
import space.kscience.dataforge.meta.get
|
||||||
import hep.dataforge.meta.int
|
import space.kscience.dataforge.meta.int
|
||||||
import hep.dataforge.misc.DFExperimental
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
import kotlinx.io.text.writeUtf8String
|
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
import kotlin.test.assertTrue
|
import kotlin.test.assertTrue
|
@ -0,0 +1,12 @@
|
|||||||
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
|
import io.ktor.utils.io.core.ByteReadPacket
|
||||||
|
import io.ktor.utils.io.core.use
|
||||||
|
|
||||||
|
|
||||||
|
fun <T : Any> IOFormat<T>.writeToByteArray(obj: T): ByteArray = buildByteArray {
|
||||||
|
writeObject(this, obj)
|
||||||
|
}
|
||||||
|
fun <T : Any> IOFormat<T>.readFromByteArray(array: ByteArray): T = ByteReadPacket(array).use {
|
||||||
|
readObject(it)
|
||||||
|
}
|
@ -1,45 +0,0 @@
|
|||||||
package hep.dataforge.io
|
|
||||||
|
|
||||||
import kotlinx.io.*
|
|
||||||
import kotlinx.io.buffer.Buffer
|
|
||||||
import kotlinx.io.buffer.set
|
|
||||||
import java.io.InputStream
|
|
||||||
import java.io.OutputStream
|
|
||||||
|
|
||||||
private class BlockingStreamInput(val source: InputStream) : Input() {
|
|
||||||
override fun closeSource() {
|
|
||||||
source.close()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun fill(buffer: Buffer, startIndex: Int, endIndex: Int): Int {
|
|
||||||
while (source.available() == 0) {
|
|
||||||
//block until input is available
|
|
||||||
}
|
|
||||||
// Zero-copy attempt
|
|
||||||
if (buffer.buffer.hasArray()) {
|
|
||||||
val result = source.read(buffer.buffer.array(), startIndex, endIndex - startIndex)
|
|
||||||
return result.coerceAtLeast(0) // -1 when IS is closed
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i in startIndex until endIndex) {
|
|
||||||
val byte = source.read()
|
|
||||||
if (byte == -1) return (i - startIndex)
|
|
||||||
buffer[i] = byte.toByte()
|
|
||||||
}
|
|
||||||
return endIndex - startIndex
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public fun <R> InputStream.read(size: Int, block: Input.() -> R): R {
|
|
||||||
val buffer = ByteArray(size)
|
|
||||||
read(buffer)
|
|
||||||
return buffer.asBinary().read(block = block)
|
|
||||||
}
|
|
||||||
|
|
||||||
public fun <R> InputStream.read(block: Input.() -> R): R = asInput().block()
|
|
||||||
|
|
||||||
public fun <R> InputStream.readBlocking(block: Input.() -> R): R = BlockingStreamInput(this).block()
|
|
||||||
|
|
||||||
public inline fun OutputStream.write(block: Output.() -> Unit) {
|
|
||||||
asOutput().block()
|
|
||||||
}
|
|
@ -1,17 +1,42 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.meta.Meta
|
import io.ktor.utils.io.core.*
|
||||||
import hep.dataforge.meta.descriptors.NodeDescriptor
|
import io.ktor.utils.io.streams.asOutput
|
||||||
import hep.dataforge.meta.isEmpty
|
import space.kscience.dataforge.meta.Meta
|
||||||
import hep.dataforge.misc.DFExperimental
|
import space.kscience.dataforge.meta.descriptors.NodeDescriptor
|
||||||
import kotlinx.io.*
|
import space.kscience.dataforge.meta.isEmpty
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.nio.file.StandardOpenOption
|
import java.nio.file.StandardOpenOption
|
||||||
|
import kotlin.io.path.ExperimentalPathApi
|
||||||
|
import kotlin.io.path.inputStream
|
||||||
|
import kotlin.math.min
|
||||||
import kotlin.reflect.full.isSupertypeOf
|
import kotlin.reflect.full.isSupertypeOf
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
import kotlin.streams.asSequence
|
import kotlin.streams.asSequence
|
||||||
|
|
||||||
|
|
||||||
|
internal class PathBinary(
|
||||||
|
private val path: Path,
|
||||||
|
private val fileOffset: Int = 0,
|
||||||
|
override val size: Int = Files.size(path).toInt() - fileOffset,
|
||||||
|
) : Binary {
|
||||||
|
|
||||||
|
@OptIn(ExperimentalPathApi::class)
|
||||||
|
override fun <R> read(offset: Int, atMost: Int, block: Input.() -> R): R {
|
||||||
|
val actualOffset = offset + fileOffset
|
||||||
|
val actualSize = min(atMost, size - offset)
|
||||||
|
val array = path.inputStream().use {
|
||||||
|
it.skip(actualOffset.toLong())
|
||||||
|
it.readNBytes(actualSize)
|
||||||
|
}
|
||||||
|
return ByteReadPacket(array).block()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun Path.asBinary(): Binary = PathBinary(this)
|
||||||
|
|
||||||
public fun <R> Path.read(block: Input.() -> R): R = asBinary().read(block = block)
|
public fun <R> Path.read(block: Input.() -> R): R = asBinary().read(block = block)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -46,11 +71,13 @@ public fun Path.rewrite(block: Output.() -> Unit): Unit {
|
|||||||
|
|
||||||
public fun Path.readEnvelope(format: EnvelopeFormat): Envelope {
|
public fun Path.readEnvelope(format: EnvelopeFormat): Envelope {
|
||||||
val partialEnvelope: PartialEnvelope = asBinary().read {
|
val partialEnvelope: PartialEnvelope = asBinary().read {
|
||||||
format.run { readPartial(this@read) }
|
format.run {
|
||||||
|
readPartial(this@read)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
val offset: Int = partialEnvelope.dataOffset.toInt()
|
val offset: Int = partialEnvelope.dataOffset.toInt()
|
||||||
val size: Int = partialEnvelope.dataSize?.toInt() ?: (Files.size(this).toInt() - offset)
|
val size: Int = partialEnvelope.dataSize?.toInt() ?: (Files.size(this).toInt() - offset)
|
||||||
val binary = FileBinary(this, offset, size)
|
val binary = PathBinary(this, offset, size)
|
||||||
return SimpleEnvelope(partialEnvelope.meta, binary)
|
return SimpleEnvelope(partialEnvelope.meta, binary)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +87,7 @@ public fun Path.readEnvelope(format: EnvelopeFormat): Envelope {
|
|||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
@DFExperimental
|
@DFExperimental
|
||||||
public inline fun <reified T : Any> IOPlugin.resolveIOFormat(): IOFormat<T>? {
|
public inline fun <reified T : Any> IOPlugin.resolveIOFormat(): IOFormat<T>? {
|
||||||
return ioFormatFactories.find { it.type.isSupertypeOf(typeOf<T>())} as IOFormat<T>?
|
return ioFormatFactories.find { it.type.isSupertypeOf(typeOf<T>()) } as IOFormat<T>?
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -119,9 +146,7 @@ public fun IOPlugin.writeMetaFile(
|
|||||||
public fun IOPlugin.peekFileEnvelopeFormat(path: Path): EnvelopeFormat? {
|
public fun IOPlugin.peekFileEnvelopeFormat(path: Path): EnvelopeFormat? {
|
||||||
val binary = path.asBinary()
|
val binary = path.asBinary()
|
||||||
val formats = envelopeFormatFactories.mapNotNull { factory ->
|
val formats = envelopeFormatFactories.mapNotNull { factory ->
|
||||||
binary.read {
|
factory.peekFormat(this@peekFileEnvelopeFormat, binary)
|
||||||
factory.peekFormat(this@peekFileEnvelopeFormat, this@read)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return when (formats.size) {
|
return when (formats.size) {
|
||||||
@ -231,7 +256,7 @@ public fun IOPlugin.writeEnvelopeDirectory(
|
|||||||
dataFile.write {
|
dataFile.write {
|
||||||
envelope.data?.read {
|
envelope.data?.read {
|
||||||
val copied = copyTo(this@write)
|
val copied = copyTo(this@write)
|
||||||
if (copied != envelope.data?.size) {
|
if (copied != envelope.data?.size?.toLong()) {
|
||||||
error("The number of copied bytes does not equal data size")
|
error("The number of copied bytes does not equal data size")
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
|
//
|
||||||
|
//private class BlockingStreamInput(val source: InputStream) : AbstractInput() {
|
||||||
|
// override fun closeSource() {
|
||||||
|
// source.close()
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// override fun fill(destination: Memory, offset: Int, length: Int): Int {
|
||||||
|
// while (source.available() == 0) {
|
||||||
|
// //block until input is available
|
||||||
|
// }
|
||||||
|
// // Zero-copy attempt
|
||||||
|
// if (buffer.buffer.hasArray()) {
|
||||||
|
// val result = source.read(buffer.buffer.array(), startIndex, endIndex - startIndex)
|
||||||
|
// return result.coerceAtLeast(0) // -1 when IS is closed
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// for (i in startIndex until endIndex) {
|
||||||
|
// val byte = source.read()
|
||||||
|
// if (byte == -1) return (i - startIndex)
|
||||||
|
// buffer[i] = byte.toByte()
|
||||||
|
// }
|
||||||
|
// return endIndex - startIndex
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//public fun <R> InputStream.read(size: Int, block: Input.() -> R): R {
|
||||||
|
// val buffer = ByteArray(size)
|
||||||
|
// read(buffer)
|
||||||
|
// return buffer.asBinary().read(block = block)
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//public fun <R> InputStream.read(block: Input.() -> R): R = asInput().block()
|
||||||
|
//
|
||||||
|
//public fun <R> InputStream.readBlocking(block: Input.() -> R): R = BlockingStreamInput(this).block()
|
||||||
|
//
|
||||||
|
//public inline fun OutputStream.write(block: Output.() -> Unit) {
|
||||||
|
// asOutput().block()
|
||||||
|
//}
|
@ -1,2 +1,2 @@
|
|||||||
hep.dataforge.io.BinaryMetaFormatFactory
|
space.kscience.dataforge.io.BinaryMetaFormatFactory
|
||||||
hep.dataforge.io.JsonMetaFormatFactory
|
space.kscience.dataforge.io.JsonMetaFormatFactory
|
@ -1,10 +1,8 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.context.Global
|
import io.ktor.utils.io.core.writeDouble
|
||||||
import hep.dataforge.misc.DFExperimental
|
import space.kscience.dataforge.context.Global
|
||||||
import kotlinx.io.asBinary
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
import kotlinx.io.toByteArray
|
|
||||||
import kotlinx.io.writeDouble
|
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
@ -15,7 +13,7 @@ class FileBinaryTest {
|
|||||||
"a" put "AAA"
|
"a" put "AAA"
|
||||||
"b" put 22.2
|
"b" put 22.2
|
||||||
}
|
}
|
||||||
dataType = "hep.dataforge.test"
|
dataType = "space.kscience.dataforge.test"
|
||||||
dataID = "myData" // добавил только что
|
dataID = "myData" // добавил только что
|
||||||
data {
|
data {
|
||||||
writeDouble(16.7)
|
writeDouble(16.7)
|
||||||
@ -37,7 +35,7 @@ class FileBinaryTest {
|
|||||||
"a" put "AAA"
|
"a" put "AAA"
|
||||||
"b" put 22.2
|
"b" put 22.2
|
||||||
}
|
}
|
||||||
dataType = "hep.dataforge.satellite"
|
dataType = "space.kscience.dataforge.satellite"
|
||||||
dataID = "cellDepositTest"
|
dataID = "cellDepositTest"
|
||||||
data = dataFile.asBinary()
|
data = dataFile.asBinary()
|
||||||
}
|
}
|
@ -1,8 +1,8 @@
|
|||||||
package hep.dataforge.io
|
package space.kscience.dataforge.io
|
||||||
|
|
||||||
import hep.dataforge.context.Global
|
import io.ktor.utils.io.core.writeDouble
|
||||||
import hep.dataforge.misc.DFExperimental
|
import space.kscience.dataforge.context.Global
|
||||||
import kotlinx.io.writeDouble
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertTrue
|
import kotlin.test.assertTrue
|
||||||
@ -15,11 +15,10 @@ class FileEnvelopeTest {
|
|||||||
"a" put "AAA"
|
"a" put "AAA"
|
||||||
"b" put 22.2
|
"b" put 22.2
|
||||||
}
|
}
|
||||||
dataType = "hep.dataforge.test"
|
dataType = "space.kscience.dataforge.test"
|
||||||
dataID = "myData" // добавил только что
|
dataID = "myData" // добавил только что
|
||||||
data {
|
data {
|
||||||
writeDouble(16.7)
|
writeDouble(16.7)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("ru.mipt.npm.mpp")
|
id("ru.mipt.npm.gradle.mpp")
|
||||||
id("ru.mipt.npm.native")
|
id("ru.mipt.npm.gradle.native")
|
||||||
}
|
}
|
||||||
|
|
||||||
kscience {
|
kscience {
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package hep.dataforge.meta
|
package space.kscience.dataforge.meta
|
||||||
|
|
||||||
import hep.dataforge.names.Name
|
|
||||||
import hep.dataforge.names.NameToken
|
|
||||||
import hep.dataforge.names.asName
|
|
||||||
import hep.dataforge.names.plus
|
|
||||||
import kotlinx.serialization.KSerializer
|
import kotlinx.serialization.KSerializer
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||||
import kotlinx.serialization.encoding.Decoder
|
import kotlinx.serialization.encoding.Decoder
|
||||||
import kotlinx.serialization.encoding.Encoder
|
import kotlinx.serialization.encoding.Encoder
|
||||||
|
import space.kscience.dataforge.names.Name
|
||||||
|
import space.kscience.dataforge.names.NameToken
|
||||||
|
import space.kscience.dataforge.names.asName
|
||||||
|
import space.kscience.dataforge.names.plus
|
||||||
import kotlin.collections.set
|
import kotlin.collections.set
|
||||||
import kotlin.jvm.Synchronized
|
import kotlin.jvm.Synchronized
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
package hep.dataforge.meta
|
package space.kscience.dataforge.meta
|
||||||
|
|
||||||
import hep.dataforge.misc.DFBuilder
|
import space.kscience.dataforge.misc.DFBuilder
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import kotlin.properties.ReadWriteProperty
|
import kotlin.properties.ReadWriteProperty
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,9 +1,9 @@
|
|||||||
package hep.dataforge.meta
|
package space.kscience.dataforge.meta
|
||||||
|
|
||||||
import hep.dataforge.meta.transformations.MetaConverter
|
import space.kscience.dataforge.meta.transformations.MetaConverter
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import hep.dataforge.names.asName
|
import space.kscience.dataforge.names.asName
|
||||||
import hep.dataforge.values.Value
|
import space.kscience.dataforge.values.Value
|
||||||
import kotlin.properties.ReadOnlyProperty
|
import kotlin.properties.ReadOnlyProperty
|
||||||
|
|
||||||
/* Meta delegates */
|
/* Meta delegates */
|
@ -1,6 +1,6 @@
|
|||||||
package hep.dataforge.meta
|
package space.kscience.dataforge.meta
|
||||||
|
|
||||||
import hep.dataforge.names.*
|
import space.kscience.dataforge.names.*
|
||||||
|
|
||||||
public fun interface ItemProvider {
|
public fun interface ItemProvider {
|
||||||
//getItem used instead of get in order to provide extension freedom
|
//getItem used instead of get in order to provide extension freedom
|
@ -1,16 +1,16 @@
|
|||||||
@file:Suppress("UNUSED_PARAMETER")
|
@file:Suppress("UNUSED_PARAMETER")
|
||||||
|
|
||||||
package hep.dataforge.meta
|
package space.kscience.dataforge.meta
|
||||||
|
|
||||||
import hep.dataforge.meta.JsonMeta.Companion.JSON_ARRAY_KEY
|
|
||||||
import hep.dataforge.meta.descriptors.ItemDescriptor
|
|
||||||
import hep.dataforge.meta.descriptors.ItemDescriptor.Companion.DEFAULT_INDEX_KEY
|
|
||||||
import hep.dataforge.meta.descriptors.NodeDescriptor
|
|
||||||
import hep.dataforge.meta.descriptors.ValueDescriptor
|
|
||||||
import hep.dataforge.names.NameToken
|
|
||||||
import hep.dataforge.names.withIndex
|
|
||||||
import hep.dataforge.values.*
|
|
||||||
import kotlinx.serialization.json.*
|
import kotlinx.serialization.json.*
|
||||||
|
import space.kscience.dataforge.meta.JsonMeta.Companion.JSON_ARRAY_KEY
|
||||||
|
import space.kscience.dataforge.meta.descriptors.ItemDescriptor
|
||||||
|
import space.kscience.dataforge.meta.descriptors.ItemDescriptor.Companion.DEFAULT_INDEX_KEY
|
||||||
|
import space.kscience.dataforge.meta.descriptors.NodeDescriptor
|
||||||
|
import space.kscience.dataforge.meta.descriptors.ValueDescriptor
|
||||||
|
import space.kscience.dataforge.names.NameToken
|
||||||
|
import space.kscience.dataforge.names.withIndex
|
||||||
|
import space.kscience.dataforge.values.*
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,7 +1,7 @@
|
|||||||
package hep.dataforge.meta
|
package space.kscience.dataforge.meta
|
||||||
|
|
||||||
import hep.dataforge.names.Name
|
import space.kscience.dataforge.names.Name
|
||||||
import hep.dataforge.names.NameToken
|
import space.kscience.dataforge.names.NameToken
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A meta laminate consisting of multiple immutable meta layers. For mutable front layer, use [Scheme].
|
* A meta laminate consisting of multiple immutable meta layers. For mutable front layer, use [Scheme].
|
@ -1,8 +1,8 @@
|
|||||||
package hep.dataforge.meta
|
package space.kscience.dataforge.meta
|
||||||
|
|
||||||
import hep.dataforge.names.*
|
|
||||||
import hep.dataforge.values.Value
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
import space.kscience.dataforge.names.*
|
||||||
|
import space.kscience.dataforge.values.Value
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user