Skip to content

xcomponent/ReactiveXComponent.Net

Folders and files

NameName
Last commit message
Last commit date
Nov 29, 2022
Nov 29, 2022
Nov 29, 2022
Feb 27, 2019
Nov 29, 2022
Feb 25, 2019
Feb 14, 2019
Apr 10, 2017
May 24, 2016
Mar 6, 2019
Feb 25, 2019
Jun 22, 2016
Dec 15, 2017
Mar 25, 2019
Feb 25, 2019
Feb 25, 2019
Nov 4, 2016

Repository files navigation

XComponent team Slack ReactiveXComponent.Net Nuget ReactiveXComponent.Net Downloads CircleCI branch

.Net Reactive XComponent API

ReactiveXComponent.Net is a .Net client API that allows you to interact with microservices generated with XComponent software.

Install

Use Nuget to install the latest version of the API: nuget install ReactiveXComponent.Net -Pre

Usage

Usage example of ReactiveXComponent.Net API

// All the info we need is in the xcApi file. Get a XComponentApi..
IXComponentApi xcApi = XComponentApi.CreateFromXCApi(@".\HelloWorld.xcApi");

// Create a session..
using (IXCSession xcSession = xcApi.CreateSession())
{
    var componentName = "HelloWorld";
    var helloWorldManagerStateMachineName = "HelloWorldManager";
    var helloWorldResponseStateMachineCode = 1837059171;

    // Create a subscriber..
    var subscriber = xcSession.CreateSubscriber(componentName);

    // Create a publisher..
    var publisher = xcSession.CreatePublisher(componentName);

    // Need to call subscribe for the state machine we are interested in..
    subscriber.Subscribe(helloWorldManagerStateMachineName, arg => {});

    // Subscribe to state machine updates via the IObservable collection..
    var eventReceived = new ManualResetEvent(false);
    var observer = Observer.Create<MessageEventArgs>(args =>
    {
        Console.WriteLine(args.MessageReceived);
        eventReceived.Set();
    });

    var subscription = subscriber.StateMachineUpdatesStream
                                .Where(e => e.StateMachineRefHeader.StateMachineCode == helloWorldResponseStateMachineCode)
                                .Subscribe(observer);

    // Send an event to a state machine..
    var sayHiEvent = new SayHi() { To = "World" };

    publisher.SendEvent(helloWorldManagerStateMachineName, sayHiEvent);

    // Wait for state machine update and dispose subscription..
    eventReceived.WaitOne(5000);

    subscription.Dispose();
}

Build from source

Download the source code and execute the following command in a PowerShell:

.\build.ps1 -Target All

That would build the source code run the tests and create a Nuget package under the nuget folder.

The complete command that contains all the possible parameters is as follows:

.\build.ps1 -Target <Target> --buildConfiguration=<build_config> --buildVersion=<build_version> --setAssemblyVersion=<true_or_false>

target can be one of these values:
Clean
RestoreNugetPackages
Build
Test
CreatePackage
All

Default value: Build

buildConfiguration can be either Debug or Release.
Default value: Release

buildVersion is the build version to set for the assembly or Nuget package.
Default value: 1.0.0-build1

setAssemblyVersion can be either True or False. When set to true the assembly version will be set to the value indicated by buildVersion.
Default value: False

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push -u origin my-new-feature
  5. Submit a pull request

License

Apache License V2