Reactive Distributed communication framework for .NET, Kotlin, C++. Inspired by Rider IDE.
APACHE-2.0 License
Reactive Distributed communication framework for .NET, Kotlin and C++ (experimental). Inspired by JetBrains Rider IDE.
The framework contains several libraries for single process usage and cross-process communication.
JetBrains Core library for graceful disposal, concurrency and reactive programming. For single-process usage.
Kotlin
.NET
JetBrains Networking library for reactive distributed communication
Kotlin
.NET
Plugin for RdFramework used for defining models using regular C#
Rd Generator: generates stubs (Kotlin/C#/C++) classes by Kotlin DSL models
Firstly decide which languages will be involved in the protocol. It may be Kotlin and C#, Rider uses them for instance. Or C++ only, who knows. After that prepare the environment and build needed assemblies. Choose separate or common build based on needs.
Open solution in JetBrains Rider: https://github.com/JetBrains/rd/tree/HEAD/rd-net/Rd.sln
dotnet build rd-net/Rd.sln
Open the project in IntelliJ IDEA: https://github.com/JetBrains/rd
./gradlew :build -x test
Open the project in CLion: https://github.com/JetBrains/rd/tree/HEAD/rd-cpp
cd rd-cpp
./build.cmd
or
gradle :rd-cpp:build -x test
./gradlew build
To build packages locally please use: rd-kt/rd-gen/pack.sh
* Right now it works only on Linux. Please use Docker for Windows or macOS.
Don't forget to set TEAMCITY_VERSION=1
(temporary measure for now) before running any tests.
$ ./gradlew build
$ docker build . -t rd && docker rm rd && docker run -it --name rd rd
To run particular tests (e.g. :rd-gen:test
):
$ docker build . -t rd && docker rm rd && docker run -it --name rd rd --entrypoint ./gradlew :rd-gen:test
To extract test results afterwards:
$ docker cp rd:/rd/rd-kt/rd-gen/build/reports/ T:\Temp\reports
Generate models in each language you have chosen. For this purpose project :rd-gen must be built.
See https://www.jetbrains.com/help/resharper/sdk/Rider.html#protocol-extension for more details.
See com.jetbrains.rd.generator.test.cases.generator.demo.DemoModel and com.jetbrains.rd.generator.test.cases.generator.example.ExampleModel
Generally, it depends on the architecture. But in standard Client-Server architecture through localhost connection framework's classes are suitable.
JetBrains.Rd.Impl.Server and *.Client respectively
com.jetbrains.rd.framework.Server and *.Client respectively
rd::SocketWire::Server and *.Client respectively
Look at cross tests
Rd is licensed under the Apache 2.0 license. Rd distributions may include third-party software licensed separately; see THIRD-PARTY-NOTICES for details.