Giter Site home page Giter Site logo

pipr's Introduction

Pipr

A simple chain of responsibility pipeline for .NET

Installing Pipr

You should install Pipr with NuGet:

Install-Package Pipr

Or via the .NET Core command line interface:

dotnet add package Pipr

Either commands, from Package Manager Console or .NET Core CLI, will download and install Pipr and all required dependencies.

Usage

Simple

First, create some steps that implement IStep<Tin, Tout>.

public class ToStringStep : IStep<int, string>
{
    public string Execute(int input, PipelineContext context)
    {
        return input.ToString();
    }
}

public class DoublerStep : IStep<string, string>
{
    public string Execute(string input, PipelineContext context)
    {
        return input + input;
    }
}

Then configure a pipeline by adding your steps

var pipeline = new PipelineBuilder()
            .AddStep(new ToStringStep())
            .AddStep(new DoublerStep())
            .Build();

var result = pipeline.Execute(12);

// result.Value in this example should be "1212"

The in/out of the pipeline can be inferred by the type system as you add steps.

Aborting

Pipeline steps can cancel and abort further processing by calling context.Cancel():

For example

public class CancellingStep : IStep<string, string>
{
    public string Execute(string input, PipelineContext context)
    {
        context.Cancel();
        return "a value";
    }
}

If a step cancels further processing, no following steps will run, and the pipeline return value will be the default value for the return type.

pipr's People

Contributors

markthiessen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

kbmanikanta

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.