GithubHelp home page GithubHelp logo

isabella232 / rd Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jetbrains/rd

0.0 0.0 0.0 5.86 MB

Reactive Distributed communication framework for .net, kotlin, js. Inspired by Rider IDE.

License: Apache License 2.0

Kotlin 36.13% CMake 1.29% C++ 19.78% Batchfile 0.31% C# 42.42% C 0.01% Shell 0.05% Dockerfile 0.01%

rd's Introduction

RD

official JetBrains project Maven Central

Reactive Distributed communication framework for .NET, Kotlin and C++ (experimental). Inspired by JetBrains Rider IDE.

Structure

The framework contains several libraries for single process usage and cross-process communication.

Lifetimes

JetBrains Core library for graceful disposal, concurrency and reactive programming. For single-process usage.

RdFramework

JetBrains Networking library for reactive distributed communication

RdFramework.Reflection

Plugin for RdFramework used for defining models using regular C#

RdGen

Rd Generator: generates stubs (Kotlin/C#/C++) classes by Kotlin DSL models

How to build

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.

Separate build

.NET

Open solution in JetBrains Rider: https://github.com/JetBrains/rd/tree/master/rd-net/Rd.sln

Requirements

  • .NET Framework >= 3.5

Console build instructions

  • dotnet build rd-net/Rd.sln

Kotlin

Open solution in IntellijIDEA: https://github.com/JetBrains/rd

Requirements

  • Gradle 6.2.2
  • Kotlin 1.3.61

Console build instructions

  • gradle :build -x test

C++ (experimental)

Open solution in JetBrains CLion: https://github.com/JetBrains/rd/rd-cpp

Requirements

  • git
  • cmake
  • Visual Studio 2015+ or
  • clang 6.0+

Console build instructions

  • cd rd-cpp
  • ./build.cmd

or

  • gradle :rd-cpp:build -x test

Build everything

  • gradle build

Build NuGet packages instructions

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.

Run tests (Kotlin part only)

On a local computer

Don't forget to set TEAMCITY_VERSION=1 (temporary measure for now) before running any tests.

$ ./gradlew build

In a Docker container

$ 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

How to generate models (stubs)

Generate models in each language you have chosen. For this purpose project :rd-gen must be built.

Instruction

See https://www.jetbrains.com/help/resharper/sdk/Products/Rider.html#protocol-extension for more details.

More examples of models

See com.jetbrains.rd.generator.test.cases.generator.demo.DemoModel and com.jetbrains.rd.generator.test.cases.generator.example.ExampleModel

How to connect processes

Generally, it depends on the architecture. But in standard Client-Server architecture through localhost connection framework's classes are suitable.

C#

JetBrains.Rd.Impl.Server and *.Client respectively

Kotlin

com.jetbrains.rd.framework.Server and *.Client respectively

C++

rd::SocketWire::Server and *.Client respectively

Examples of connections

Look at cross tests

  • com.jetbrains.rd.framework.test.cross at Kotlin side
  • Test.RdCross at C# side
  • rd::cross at C++ side

License

Rd is licensed under the Apache 2.0 license. Rd distributions may include third-party software licensed separately; see THIRD-PARTY-NOTICES for details.

rd's People

Contributors

korifey avatar operasfantom avatar ulex avatar knah avatar fornever avatar mfilippov avatar iliya-usov avatar yole avatar decoyrs avatar vlomshakov avatar pavelyatcheniy avatar slavam2605 avatar nicklyu avatar sergeyqx avatar epeshk avatar denis417 avatar ivanpashchenko avatar yvvan avatar serjic avatar nerzhulart avatar controlflow avatar shalupov avatar denofevil avatar van800 avatar leomash avatar krasnotsvetov avatar graann avatar vorotynsky avatar poksh avatar rizzen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.