From 526a0ccce24da6a136b5c0569d9277f92d7e92be Mon Sep 17 00:00:00 2001 From: matyo91 Date: Mon, 19 Aug 2024 06:05:29 +0000 Subject: [PATCH] deploy: bb3fe5a7ea7b82407c6e4f8012feff43cc04e194 --- 404.html | 4 ++-- blog/index.html | 4 ++-- blog/index.xml | 2 +- blog/page/1/index.html | 2 +- blog/say-hello-to-doks/index.html | 4 ++-- blog/sitemap.xml | 2 +- contributors/henk-verlinde/index.html | 4 ++-- contributors/henk-verlinde/index.xml | 2 +- contributors/index.html | 4 ++-- contributors/index.xml | 2 +- contributors/matyo91/index.html | 4 ++-- contributors/matyo91/index.xml | 2 +- docs/getting-started/async-handler/index.html | 9 +++++++++ docs/getting-started/changelog/index.html | 10 +++++----- docs/getting-started/driver/index.html | 12 ++++++------ docs/getting-started/flow/index.html | 10 +++++----- docs/getting-started/index.html | 8 ++++---- docs/getting-started/index.xml | 18 ++++++++++-------- docs/getting-started/introduction/index.html | 13 +++++++------ docs/getting-started/ip-strategy/index.html | 10 +++++----- docs/getting-started/license/index.html | 12 ++++++------ docs/getting-started/ressources/index.html | 12 ++++++------ docs/getting-started/sitemap.xml | 2 +- docs/index.html | 8 ++++---- docs/index.xml | 2 +- docs/sitemap.xml | 2 +- index.html | 6 +++--- ...e9d0046245e6e31f6d26cd8a67c3ae8ae2c0fed1.js | 1 - ...82651b9164e91aa00ab1ccf571b4b64846fd3e02.js | 1 + index.xml | 2 +- robots.txt | 2 +- sitemap.xml | 2 +- 32 files changed, 95 insertions(+), 83 deletions(-) create mode 100644 docs/getting-started/async-handler/index.html delete mode 100644 index.min.5a0fd019a8915330cb81ee1ec8ce29216edfb9fa572fd4a0d403a066e8f4703f8f86e1b86e7a5ccce3cd2205e9d0046245e6e31f6d26cd8a67c3ae8ae2c0fed1.js create mode 100644 index.min.7a6230a6d65da58de52e2fa71995835d2171ee7bf1f28fee90342ad87448d9fc1dc42493fbc0c78668ff4f1a82651b9164e91aa00ab1ccf571b4b64846fd3e02.js diff --git a/404.html b/404.html index 2e4b537b..5d7fb700 100644 --- a/404.html +++ b/404.html @@ -1,5 +1,5 @@ -404 Page not found - Flow

Page not found :(

The page you are looking for doesn't exist or has been moved.

diff --git a/blog/index.html b/blog/index.html index 6567b2ec..c9246deb 100644 --- a/blog/index.html +++ b/blog/index.html @@ -1,5 +1,5 @@ -Blog - Flow

Blog

Say hello to Doks 👋

Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default.

Posted November 4, 2020 by Henk Verlinde ‐ 0 min read

diff --git a/blog/index.xml b/blog/index.xml index f1c6d6c3..3ea0b84c 100644 --- a/blog/index.xml +++ b/blog/index.xml @@ -1 +1 @@ -Blog onhttps://darkwood-fr.github.io/flow/blog/Recent content in Blog onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:49:55 +0000Say hello to Doks 👋https://darkwood-fr.github.io/flow/blog/say-hello-to-doks/Wed, 04 Nov 2020 09:19:42 +0100https://darkwood-fr.github.io/flow/blog/say-hello-to-doks/ \ No newline at end of file +Blog onhttps://darkwood-com.github.io/flow/blog/Recent content in Blog onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:49:55 +0000Say hello to Doks 👋https://darkwood-com.github.io/flow/blog/say-hello-to-doks/Wed, 04 Nov 2020 09:19:42 +0100https://darkwood-com.github.io/flow/blog/say-hello-to-doks/ \ No newline at end of file diff --git a/blog/page/1/index.html b/blog/page/1/index.html index cebafba9..5c328eca 100644 --- a/blog/page/1/index.html +++ b/blog/page/1/index.html @@ -1 +1 @@ -https://darkwood-fr.github.io/flow/blog/ \ No newline at end of file +https://darkwood-com.github.io/flow/blog/ \ No newline at end of file diff --git a/blog/say-hello-to-doks/index.html b/blog/say-hello-to-doks/index.html index 95c2bf8b..aca584b0 100644 --- a/blog/say-hello-to-doks/index.html +++ b/blog/say-hello-to-doks/index.html @@ -1,5 +1,5 @@ -Say hello to Doks 👋 - Flow

Say hello to Doks 👋

Posted November 4, 2020 by Henk Verlinde ‐ 0 min read

Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default.

diff --git a/blog/sitemap.xml b/blog/sitemap.xml index df50447f..1b26533b 100644 --- a/blog/sitemap.xml +++ b/blog/sitemap.xml @@ -1 +1 @@ -https://darkwood-fr.github.io/flow/blog/say-hello-to-doks/2020-11-04T09:19:42+01:00weekly0.5 \ No newline at end of file +https://darkwood-com.github.io/flow/blog/say-hello-to-doks/2020-11-04T09:19:42+01:00weekly0.5 \ No newline at end of file diff --git a/contributors/henk-verlinde/index.html b/contributors/henk-verlinde/index.html index 62cd86ac..80a30cc8 100644 --- a/contributors/henk-verlinde/index.html +++ b/contributors/henk-verlinde/index.html @@ -1,5 +1,5 @@ -Henk Verlinde - Flow

Henk Verlinde

Say hello to Doks 👋

Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default.

Posted November 4, 2020 by Henk Verlinde ‐ 0 min read

diff --git a/contributors/henk-verlinde/index.xml b/contributors/henk-verlinde/index.xml index aec569b5..23ab891b 100644 --- a/contributors/henk-verlinde/index.xml +++ b/contributors/henk-verlinde/index.xml @@ -1 +1 @@ -Henk Verlinde onhttps://darkwood-fr.github.io/flow/contributors/henk-verlinde/Recent content in Henk Verlinde onHugo -- gohugo.ioen-USWed, 04 Nov 2020 09:19:42 +0100Say hello to Doks 👋https://darkwood-fr.github.io/flow/blog/say-hello-to-doks/Wed, 04 Nov 2020 09:19:42 +0100https://darkwood-fr.github.io/flow/blog/say-hello-to-doks/ \ No newline at end of file +Henk Verlinde onhttps://darkwood-com.github.io/flow/contributors/henk-verlinde/Recent content in Henk Verlinde onHugo -- gohugo.ioen-USWed, 04 Nov 2020 09:19:42 +0100Say hello to Doks 👋https://darkwood-com.github.io/flow/blog/say-hello-to-doks/Wed, 04 Nov 2020 09:19:42 +0100https://darkwood-com.github.io/flow/blog/say-hello-to-doks/ \ No newline at end of file diff --git a/contributors/index.html b/contributors/index.html index 10f3d46c..4374fd29 100644 --- a/contributors/index.html +++ b/contributors/index.html @@ -1,5 +1,5 @@ -Contributors - Flow
diff --git a/contributors/index.xml b/contributors/index.xml index 59e550bb..f6a48367 100644 --- a/contributors/index.xml +++ b/contributors/index.xml @@ -1,2 +1,2 @@ -Contributors onhttps://darkwood-fr.github.io/flow/contributors/Recent content in Contributors onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:50:29 +0000Henk Verlindehttps://darkwood-fr.github.io/flow/contributors/henk-verlinde/Wed, 04 Nov 2020 09:19:42 +0100https://darkwood-fr.github.io/flow/contributors/henk-verlinde/Mathieu Ledruhttps://darkwood-fr.github.io/flow/contributors/matyo91/Tue, 06 Oct 2020 08:50:45 +0000https://darkwood-fr.github.io/flow/contributors/matyo91/Creator of Darkwood. +Contributors onhttps://darkwood-com.github.io/flow/contributors/Recent content in Contributors onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:50:29 +0000Henk Verlindehttps://darkwood-com.github.io/flow/contributors/henk-verlinde/Wed, 04 Nov 2020 09:19:42 +0100https://darkwood-com.github.io/flow/contributors/henk-verlinde/Mathieu Ledruhttps://darkwood-com.github.io/flow/contributors/matyo91/Tue, 06 Oct 2020 08:50:45 +0000https://darkwood-com.github.io/flow/contributors/matyo91/Creator of Darkwood. @matyo91 \ No newline at end of file diff --git a/contributors/matyo91/index.html b/contributors/matyo91/index.html index 5f247eb2..57f9e197 100644 --- a/contributors/matyo91/index.html +++ b/contributors/matyo91/index.html @@ -1,5 +1,5 @@ -Mathieu Ledru - Flow

Mathieu Ledru

Creator of Darkwood.

@matyo91

diff --git a/contributors/matyo91/index.xml b/contributors/matyo91/index.xml index a8fc7a8c..0d88e15c 100644 --- a/contributors/matyo91/index.xml +++ b/contributors/matyo91/index.xml @@ -1 +1 @@ -Mathieu Ledru onhttps://darkwood-fr.github.io/flow/contributors/matyo91/Recent content in Mathieu Ledru onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:50:45 +0000 \ No newline at end of file +Mathieu Ledru onhttps://darkwood-com.github.io/flow/contributors/matyo91/Recent content in Mathieu Ledru onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:50:45 +0000 \ No newline at end of file diff --git a/docs/getting-started/async-handler/index.html b/docs/getting-started/async-handler/index.html new file mode 100644 index 00000000..0ba7da20 --- /dev/null +++ b/docs/getting-started/async-handler/index.html @@ -0,0 +1,9 @@ +Async Handler - Flow

Async Handler

When processing Flow at async step, you can choose a handler that will process asynchronously the Ip.

AsyncHandler

This is the default one. Ip is async processed immediately.

BatchAsyncHandler

This async process Ip as batch capability : the handler will wait for a certain amount of async messages ($batchSize) to be processed before pushing them.

DeferAsyncHandler

This async process Ip to offer defer capability : the handler will pass [$data, $defer] as entry for the job. In that case, the job can fine control the async process. $defer is a callable that embark two callbacks

  • an complete callback to store result
  • an async callback to go to the next async call.

Make your Async Handler

You can make your custom Ip strategy by implementing Flow\AsyncHandlerInterface

Edit this page on GitHub

+ + + + \ No newline at end of file diff --git a/docs/getting-started/changelog/index.html b/docs/getting-started/changelog/index.html index d733339e..df1ebb31 100644 --- a/docs/getting-started/changelog/index.html +++ b/docs/getting-started/changelog/index.html @@ -1,9 +1,9 @@ -Changelog - Flow +Getting Started - + \ No newline at end of file diff --git a/docs/getting-started/driver/index.html b/docs/getting-started/driver/index.html index 7286ffe3..daad8872 100644 --- a/docs/getting-started/driver/index.html +++ b/docs/getting-started/driver/index.html @@ -1,15 +1,15 @@ -Driver - Flow

Driver

Flow embark multiple drivers.

Coroutine

Drivers are useful to essentially provide asynchronous programming by using coroutines. Thus, this can be implemented in severals ways in most popular programming languages.

Coroutine are very similar to threads and provide concurrency but not parallelism. Advantage of using coroutine :

  • this can be a preferred usage to thread for hard-realtime context.
  • there is no need for synchronisation primitives such as mutexes, semaphore.
  • it reduces the usage of system lock for sharing resources.

Amp Driver

To use Amp Driver, you have to require the library with composer

composer require amphp/amp
 

More documentation can be found https://amphp.org

Fiber Driver

More documentation can be found https://www.php.net/manual/fr/language.fibers.php

ReactPHP Driver

To use ReactPHP Driver, you have to require the library with composer

composer require react/async
 

More documentation can be found https://reactphp.org

Spatie Driver

To use Spatie Driver, you have to require the library with composer

composer require spatie/async
 

More documentation can be found https://github.com/spatie/async

Swoole Driver

To use Swoole Driver, you have to add the extension with your current running PHP

pecl install openswoole-22.0.0
-

More documentation can be found https://openswoole.com

Make your custom driver

You can make your custom driver by implementing Flow\DriverInterface

Edit this page on GitHub

+

More documentation can be found https://openswoole.com

Make your custom driver

You can make your custom driver by implementing Flow\DriverInterface

Edit this page on GitHub

- + \ No newline at end of file diff --git a/docs/getting-started/flow/index.html b/docs/getting-started/flow/index.html index 19a3cc86..f5da7c9b 100644 --- a/docs/getting-started/flow/index.html +++ b/docs/getting-started/flow/index.html @@ -1,9 +1,9 @@ -Flow - Flow

Flow

Flow implementation

According to Wikipedia, Monads is an abstract generic structure that get its usage in function composition. Monads can shortly considered as Programming with effects.

We consider Flows as a set of elements in our ensemble as a Monad implementation :

  • By using job as basic function type within the Flow.
  • By using fn as a binary operation, Flow can be composed together with others Flow element.

A Flow can process one or many Ips which has its application for asynchronous programming when mixing with Drivers.

Flow

This is the standard Flow implementation that support asynchronous Ip processing.

FlowDecorator

This is useful for implementing the decorator design pattern.

TransportFlow

TransportFlow will interact with Flow with Producer and Sender.

YFlow

YFlow use YCombinator to provide recursion.

Make your own Flow

You can make your custom Flow by implementing Flow\FlowInterface.

Edit this page on GitHub

+Getting Started

Flow

Flow implementation

According to Wikipedia, Monads is an abstract generic structure that get its usage in function composition. Monads can shortly considered as Programming with effects.

We consider Flows as a set of elements in our ensemble as a Monad implementation :

  • By using job as basic function type within the Flow.
  • By using fn as a binary operation, Flow can be composed together with others Flow element.

A Flow can process one or many Ips which has its application for asynchronous programming when mixing with Drivers.

Flow

This is the standard Flow implementation that support asynchronous Ip processing.

FlowDecorator

This is useful for implementing the decorator design pattern.

TransportFlow

TransportFlow will interact with Flow with Producer and Sender.

YFlow

YFlow use YCombinator to provide recursion.

Make your own Flow

You can make your custom Flow by implementing Flow\FlowInterface.

Edit this page on GitHub

- + \ No newline at end of file diff --git a/docs/getting-started/index.html b/docs/getting-started/index.html index 41a817af..06c6dffd 100644 --- a/docs/getting-started/index.html +++ b/docs/getting-started/index.html @@ -1,8 +1,8 @@ -Getting Started - Flow +Getting Started - + \ No newline at end of file diff --git a/docs/getting-started/index.xml b/docs/getting-started/index.xml index 2094ad4a..cfbf05fc 100644 --- a/docs/getting-started/index.xml +++ b/docs/getting-started/index.xml @@ -1,16 +1,18 @@ -Getting Started onhttps://darkwood-fr.github.io/flow/docs/getting-started/Recent content in Getting Started onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:49:15 +0000Introductionhttps://darkwood-fr.github.io/flow/docs/getting-started/introduction/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-fr.github.io/flow/docs/getting-started/introduction/Flow Why ? Flow concept aims to solve -Adopt asynchronous as native implementation Build your code with functional programming and monoids Assemble your code visually Installation PHP 8.2 is the minimal version to use Flow -The recommended way to install it through Composer and execute +Getting Started onhttps://darkwood-com.github.io/flow/docs/getting-started/Recent content in Getting Started onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:49:15 +0000Introductionhttps://darkwood-com.github.io/flow/docs/getting-started/introduction/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/introduction/Flow Why ? Flow concept aims to solve +Adopt asynchronous as native implementation Build your code with functional programming and monoids Assemble your code visually Installation PHP 8.3 is the minimal version to use Flow The recommended way to install it through Composer and execute composer require darkwood/flow Usage A working script is available in the bundled examples directory -Run Flow : php examples/flow.php Start Server : php examples/server.Flowhttps://darkwood-fr.github.io/flow/docs/getting-started/flow/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-fr.github.io/flow/docs/getting-started/flow/Flow Flow implementation According to Wikipedia, Monads is an abstract generic structure that get its usage in function composition. Monads can shortly considered as Programming with effects. +Run Flow : php examples/flow.php Start Server : php examples/server.Flowhttps://darkwood-com.github.io/flow/docs/getting-started/flow/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/flow/Flow Flow implementation According to Wikipedia, Monads is an abstract generic structure that get its usage in function composition. Monads can shortly considered as Programming with effects. We consider Flows as a set of elements in our ensemble as a Monad implementation : -By using job as basic function type within the Flow. By using fn as a binary operation, Flow can be composed together with others Flow element. A Flow can process one or many Ips which has its application for asynchronous programming when mixing with Drivers.Driverhttps://darkwood-fr.github.io/flow/docs/getting-started/driver/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-fr.github.io/flow/docs/getting-started/driver/Driver Flow embark multiple drivers. +By using job as basic function type within the Flow. By using fn as a binary operation, Flow can be composed together with others Flow element. A Flow can process one or many Ips which has its application for asynchronous programming when mixing with Drivers.Driverhttps://darkwood-com.github.io/flow/docs/getting-started/driver/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/driver/Driver Flow embark multiple drivers. Coroutine Drivers are useful to essentially provide asynchronous programming by using coroutines. Thus, this can be implemented in severals ways in most popular programming languages. Coroutine are very similar to threads and provide concurrency but not parallelism. Advantage of using coroutine : -this can be a preferred usage to thread for hard-realtime context. there is no need for synchronisation primitives such as mutexes, semaphore. it reduces the usage of system lock for sharing resources.Ip Strategyhttps://darkwood-fr.github.io/flow/docs/getting-started/ip-strategy/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-fr.github.io/flow/docs/getting-started/ip-strategy/Ip Strategy When processing Flow with one or multiple Ips, you can choose a strategy that will sequence the order of processing Ip. +this can be a preferred usage to thread for hard-realtime context. there is no need for synchronisation primitives such as mutexes, semaphore. it reduces the usage of system lock for sharing resources.Async Handlerhttps://darkwood-com.github.io/flow/docs/getting-started/async-handler/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/async-handler/Async Handler When processing Flow at async step, you can choose a handler that will process asynchronously the Ip. +AsyncHandler This is the default one. Ip is async processed immediately. +BatchAsyncHandler This async process Ip as batch capability : the handler will wait for a certain amount of async messages ($batchSize) to be processed before pushing them. +DeferAsyncHandler This async process Ip to offer defer capability : the handler will pass [$data, $defer] as entry for the job.Ip Strategyhttps://darkwood-com.github.io/flow/docs/getting-started/ip-strategy/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/ip-strategy/Ip Strategy When processing Flow with one or multiple Ips, you can choose a strategy that will sequence the order of processing Ip. LinearIpStrategy This process Ip by order : first in, first out. StackIpStrategy This process Ip as a stack order : push ip to the top of the stack, then order ip retrieval from the top stack to bottom. -MaxIpStrategy This process Ip as soon less Ip are currently process than the current max.Ressourceshttps://darkwood-fr.github.io/flow/docs/getting-started/ressources/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-fr.github.io/flow/docs/getting-started/ressources/More information about the code Article of this project : https://blog.darkwood.fr/article/php-railway-flow-based-programming Slides of this project : https://speakerdeck.com/matyo91/php-railway-flow-based-programming Video of this project : https://www.youtube.com/watch?v=mxxdhGsaIjY -Railway Flow Based Programming with Elixir from Anton Mishchuk Presentation in an article : https://anton-mishchuk.medium.com/railway-flow-based-programming-with-flowex-ef04fd338e41 Presentation with video : https://www.youtube.com/watch?v=TLvbP8bt2HA Advanced implementation with multiple programming languages : https://medium.com/@anton.mishchuk/multi-language-flowex-components-fdda11d34744 Presentation in an article : https://fr.slideshare.net/AntonMishchuk/multilanguage-fbp-with-flowex Implementation in Elixir : https://github.com/antonmi/flowex Implementation in Elixir with multiple programming languages : https://github.Changeloghttps://darkwood-fr.github.io/flow/docs/getting-started/changelog/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-fr.github.io/flow/docs/getting-started/changelog/Changelog Changelog can be found https://github.com/darkwood-fr/flow/blob/1.x/CHANGELOG.mdLicensehttps://darkwood-fr.github.io/flow/docs/getting-started/license/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-fr.github.io/flow/docs/getting-started/license/The MIT License (MIT) +MaxIpStrategy This process Ip as soon less Ip are currently process than the current max.Ressourceshttps://darkwood-com.github.io/flow/docs/getting-started/ressources/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/ressources/More information about the code Article of this project : https://blog.darkwood.fr/article/php-railway-flow-based-programming Slides of this project : https://speakerdeck.com/matyo91/php-railway-flow-based-programming Video of this project : https://www.youtube.com/watch?v=mxxdhGsaIjY +Railway Flow Based Programming with Elixir from Anton Mishchuk Presentation in an article : https://anton-mishchuk.medium.com/railway-flow-based-programming-with-flowex-ef04fd338e41 Presentation with video : https://www.youtube.com/watch?v=TLvbP8bt2HA Advanced implementation with multiple programming languages : https://medium.com/@anton.mishchuk/multi-language-flowex-components-fdda11d34744 Presentation in an article : https://fr.slideshare.net/AntonMishchuk/multilanguage-fbp-with-flowex Implementation in Elixir : https://github.com/antonmi/flowex Implementation in Elixir with multiple programming languages : https://github.Changeloghttps://darkwood-com.github.io/flow/docs/getting-started/changelog/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/changelog/Changelog Changelog can be found https://github.com/darkwood-com/flow/blob/1.x/CHANGELOG.mdLicensehttps://darkwood-com.github.io/flow/docs/getting-started/license/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/license/The MIT License (MIT) Copyright (c) 2023 Darkwood Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: \ No newline at end of file diff --git a/docs/getting-started/introduction/index.html b/docs/getting-started/introduction/index.html index 5b537e03..f973ccd3 100644 --- a/docs/getting-started/introduction/index.html +++ b/docs/getting-started/introduction/index.html @@ -1,10 +1,11 @@ -Introduction - Flow

Flow

Why ?

Flow concept aims to solve

  • Adopt asynchronous as native implementation
  • Build your code with functional programming and monoids
  • Assemble your code visually

Installation

PHP 8.2 is the minimal version to use Flow
The recommended way to install it through Composer and execute

composer require darkwood/flow
-

Usage

A working script is available in the bundled examples directory

  • Run Flow : php examples/flow.php
  • Start Server : php examples/server.php
  • Start Client(s) : php examples/client.php

Messaging part require to install Docker and execute docker-compose up -d

Documentation

https://darkwood-fr.github.io/flow

License

Flow is released under the MIT License.

Edit this page on GitHub

+Getting Started

Flow

Why ?

Flow concept aims to solve

  • Adopt asynchronous as native implementation
  • Build your code with functional programming and monoids
  • Assemble your code visually

Installation

PHP 8.3 is the minimal version to use Flow +The recommended way to install it through Composer and execute

composer require darkwood/flow
+

Usage

A working script is available in the bundled examples directory

  • Run Flow : php examples/flow.php
  • Start Server : php examples/server.php
  • Start Client(s) : php examples/client.php

Messaging part require to install Docker and execute docker-compose up -d

Documentation

https://darkwood-com.github.io/flow

License

Flow is released under the MIT License.

Edit this page on GitHub

- + \ No newline at end of file diff --git a/docs/getting-started/ip-strategy/index.html b/docs/getting-started/ip-strategy/index.html index 2223c01a..fb15a9d3 100644 --- a/docs/getting-started/ip-strategy/index.html +++ b/docs/getting-started/ip-strategy/index.html @@ -1,9 +1,9 @@ -Ip Strategy - Flow

Ip Strategy

When processing Flow with one or multiple Ips, you can choose a strategy that will sequence the order of processing Ip.

LinearIpStrategy

This process Ip by order : first in, first out.

StackIpStrategy

This process Ip as a stack order : push ip to the top of the stack, then order ip retrieval from the top stack to bottom.

MaxIpStrategy

This process Ip as soon less Ip are currently process than the current max.
You can embed it by a custom strategy with is LinearIpStrategy by default.

Make your Ip Strategy

You can make your custom Ip strategy by implementing Flow\IpStrategyInterface

Edit this page on GitHub

+Getting Started

Ip Strategy

When processing Flow with one or multiple Ips, you can choose a strategy that will sequence the order of processing Ip.

LinearIpStrategy

This process Ip by order : first in, first out.

StackIpStrategy

This process Ip as a stack order : push ip to the top of the stack, then order ip retrieval from the top stack to bottom.

MaxIpStrategy

This process Ip as soon less Ip are currently process than the current max.
You can embed it by a custom strategy with is LinearIpStrategy by default.

Make your Ip Strategy

You can make your custom Ip strategy by implementing Flow\IpStrategyInterface

Edit this page on GitHub

- + \ No newline at end of file diff --git a/docs/getting-started/license/index.html b/docs/getting-started/license/index.html index 35f1a830..88e65a43 100644 --- a/docs/getting-started/license/index.html +++ b/docs/getting-started/license/index.html @@ -1,8 +1,8 @@ -License - Flow

The MIT License (MIT)

Copyright (c) 2023 Darkwood

Permission is hereby granted, free of charge, to any person obtaining a copy of +Getting Started

The MIT License (MIT)

Copyright (c) 2023 Darkwood

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of @@ -13,8 +13,8 @@ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Edit this page on GitHub

+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Edit this page on GitHub

- + \ No newline at end of file diff --git a/docs/getting-started/ressources/index.html b/docs/getting-started/ressources/index.html index 7db3bf3b..cc94403b 100644 --- a/docs/getting-started/ressources/index.html +++ b/docs/getting-started/ressources/index.html @@ -1,15 +1,15 @@ -Ressources - Flow

More information about the code

Article of this project : https://blog.darkwood.fr/article/php-railway-flow-based-programming Slides of this project : https://speakerdeck.com/matyo91/php-railway-flow-based-programming Video of this project : https://www.youtube.com/watch?v=mxxdhGsaIjY

Railway Flow Based Programming with Elixir from Anton Mishchuk

Flow Based Programming from J. Paul Rodker Morrison

Railway Oriented Programming

Coroutines in PHP

Fibers in PHP

Monads and PHP

Article on Monads : https://blog.darkwood.fr/article/les-monades-et-leur-utilisation-en-php Slides on Monads : https://speakerdeck.com/matyo91/monads-and-usage-in-php Video on Monads : https://www.youtube.com/watch?v=0M6MhUpra9o

Y-Combinator and PHP

Article of Y-Combinator : https://blog.darkwood.fr/article/y-combinator-en-php Slides of Y-Combinator : https://speakerdeck.com/matyo91/y-combinator-in-php -Video of Y-Combinator : https://www.youtube.com/watch?v=QSS_ZcO8Q1g

Messaging approach with East oriented code from Frédéric Hardy

Edit this page on GitHub

+Video of Y-Combinator : https://www.youtube.com/watch?v=QSS_ZcO8Q1g

Messaging approach with East oriented code from Frédéric Hardy

Edit this page on GitHub

- + \ No newline at end of file diff --git a/docs/getting-started/sitemap.xml b/docs/getting-started/sitemap.xml index c9133870..5451daf2 100644 --- a/docs/getting-started/sitemap.xml +++ b/docs/getting-started/sitemap.xml @@ -1 +1 @@ -https://darkwood-fr.github.io/flow/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5 \ No newline at end of file +https://darkwood-com.github.io/flow/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/async-handler/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5 \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 14f5dba2..3ee2f8f9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,8 +1,8 @@ -Docs - Flow +Getting Started - + \ No newline at end of file diff --git a/docs/index.xml b/docs/index.xml index b8123aeb..f23d4702 100644 --- a/docs/index.xml +++ b/docs/index.xml @@ -1 +1 @@ -Docs onhttps://darkwood-fr.github.io/flow/docs/Recent content in Docs onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:48:23 +0000 \ No newline at end of file +Docs onhttps://darkwood-com.github.io/flow/docs/Recent content in Docs onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:48:23 +0000 \ No newline at end of file diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 7b3f264b..69a60679 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -1 +1 @@ -https://darkwood-fr.github.io/flow/docs/getting-started/2020-10-06T08:49:15+00:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5 \ No newline at end of file +https://darkwood-com.github.io/flow/docs/getting-started/2020-10-06T08:49:15+00:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/async-handler/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5 \ No newline at end of file diff --git a/index.html b/index.html index 4d215341..1a04693b 100644 --- a/index.html +++ b/index.html @@ -1,6 +1,6 @@ -Flow - Flow

Flow

Assemble your code by adopting asynchronous as native implementation and build with functional programming and monads.

Get Started

Open-source MIT Licensed. GitHub v1.1.5

+Flow - Flow

Flow

Assemble your code by adopting asynchronous as native implementation and build with functional programming and monads.

Get Started

Open-source MIT Licensed. GitHub v1.2.1

\ No newline at end of file diff --git a/index.min.5a0fd019a8915330cb81ee1ec8ce29216edfb9fa572fd4a0d403a066e8f4703f8f86e1b86e7a5ccce3cd2205e9d0046245e6e31f6d26cd8a67c3ae8ae2c0fed1.js b/index.min.5a0fd019a8915330cb81ee1ec8ce29216edfb9fa572fd4a0d403a066e8f4703f8f86e1b86e7a5ccce3cd2205e9d0046245e6e31f6d26cd8a67c3ae8ae2c0fed1.js deleted file mode 100644 index 990518b9..00000000 --- a/index.min.5a0fd019a8915330cb81ee1ec8ce29216edfb9fa572fd4a0d403a066e8f4703f8f86e1b86e7a5ccce3cd2205e9d0046245e6e31f6d26cd8a67c3ae8ae2c0fed1.js +++ /dev/null @@ -1 +0,0 @@ -var suggestions=document.getElementById('suggestions'),search=document.getElementById('search');search!==null&&document.addEventListener('keydown',inputFocus);function inputFocus(a){a.ctrlKey&&a.key==='/'&&(a.preventDefault(),search.focus()),a.key==='Escape'&&(search.blur(),suggestions.classList.add('d-none'))}document.addEventListener('click',function(a){var b=suggestions.contains(a.target);b||suggestions.classList.add('d-none')}),document.addEventListener('keydown',suggestionFocus);function suggestionFocus(b){const d=suggestions.querySelectorAll('a'),e=[...d],a=e.indexOf(document.activeElement),f=suggestions.classList.contains('d-none');let c=0;b.keyCode===38&&!f?(b.preventDefault(),c=a>0?a-1:0,d[c].focus()):b.keyCode===40&&!f&&(b.preventDefault(),c=a+1{a.result.forEach(a=>{b[a.doc.href]=a.doc})});for(const d in b){const e=b[d],a=document.createElement('div');if(a.innerHTML='',a.querySelector('a').href=d,a.querySelector('span:first-child').textContent=e.title,a.querySelector('span:nth-child(2)').textContent=e.description,suggestions.appendChild(a),suggestions.childElementCount==c)break}}function c(){while(suggestions.lastChild)suggestions.removeChild(suggestions.lastChild);return!1}})() \ No newline at end of file diff --git a/index.min.7a6230a6d65da58de52e2fa71995835d2171ee7bf1f28fee90342ad87448d9fc1dc42493fbc0c78668ff4f1a82651b9164e91aa00ab1ccf571b4b64846fd3e02.js b/index.min.7a6230a6d65da58de52e2fa71995835d2171ee7bf1f28fee90342ad87448d9fc1dc42493fbc0c78668ff4f1a82651b9164e91aa00ab1ccf571b4b64846fd3e02.js new file mode 100644 index 00000000..c605aaa8 --- /dev/null +++ b/index.min.7a6230a6d65da58de52e2fa71995835d2171ee7bf1f28fee90342ad87448d9fc1dc42493fbc0c78668ff4f1a82651b9164e91aa00ab1ccf571b4b64846fd3e02.js @@ -0,0 +1 @@ +var suggestions=document.getElementById('suggestions'),search=document.getElementById('search');search!==null&&document.addEventListener('keydown',inputFocus);function inputFocus(a){a.ctrlKey&&a.key==='/'&&(a.preventDefault(),search.focus()),a.key==='Escape'&&(search.blur(),suggestions.classList.add('d-none'))}document.addEventListener('click',function(a){var b=suggestions.contains(a.target);b||suggestions.classList.add('d-none')}),document.addEventListener('keydown',suggestionFocus);function suggestionFocus(b){const d=suggestions.querySelectorAll('a'),e=[...d],a=e.indexOf(document.activeElement),f=suggestions.classList.contains('d-none');let c=0;b.keyCode===38&&!f?(b.preventDefault(),c=a>0?a-1:0,d[c].focus()):b.keyCode===40&&!f&&(b.preventDefault(),c=a+1{a.result.forEach(a=>{b[a.doc.href]=a.doc})});for(const d in b){const e=b[d],a=document.createElement('div');if(a.innerHTML='',a.querySelector('a').href=d,a.querySelector('span:first-child').textContent=e.title,a.querySelector('span:nth-child(2)').textContent=e.description,suggestions.appendChild(a),suggestions.childElementCount==c)break}}function c(){while(suggestions.lastChild)suggestions.removeChild(suggestions.lastChild);return!1}})() \ No newline at end of file diff --git a/index.xml b/index.xml index 9c0b64e8..e75d3af9 100644 --- a/index.xml +++ b/index.xml @@ -1 +1 @@ -Flow onhttps://darkwood-fr.github.io/flow/Recent content in Flow onHugo -- gohugo.ioen-USCopyright (c) 2021 DarkwoodTue, 06 Oct 2020 08:47:36 +0000Bloghttps://darkwood-fr.github.io/flow/blog/Tue, 06 Oct 2020 08:49:55 +0000https://darkwood-fr.github.io/flow/blog/Docshttps://darkwood-fr.github.io/flow/docs/Tue, 06 Oct 2020 08:48:23 +0000https://darkwood-fr.github.io/flow/docs/ \ No newline at end of file +Flow onhttps://darkwood-com.github.io/flow/Recent content in Flow onHugo -- gohugo.ioen-USCopyright (c) 2021 DarkwoodTue, 06 Oct 2020 08:47:36 +0000Bloghttps://darkwood-com.github.io/flow/blog/Tue, 06 Oct 2020 08:49:55 +0000https://darkwood-com.github.io/flow/blog/Docshttps://darkwood-com.github.io/flow/docs/Tue, 06 Oct 2020 08:48:23 +0000https://darkwood-com.github.io/flow/docs/ \ No newline at end of file diff --git a/robots.txt b/robots.txt index 2205846f..589bf9cb 100644 --- a/robots.txt +++ b/robots.txt @@ -1,4 +1,4 @@ User-agent: * Allow: / -Sitemap: https://darkwood-fr.github.io/flow/sitemap.xml \ No newline at end of file +Sitemap: https://darkwood-com.github.io/flow/sitemap.xml \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 42d5ab91..4958e8f4 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://darkwood-fr.github.io/flow/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/blog/say-hello-to-doks/2020-11-04T09:19:42+01:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-fr.github.io/flow/contributors/henk-verlinde/2020-11-04T09:19:42+01:00weekly0.5https://darkwood-fr.github.io/flow/contributors/matyo91/2020-10-06T08:50:45+00:00weekly0.5https://darkwood-fr.github.io/flow/contributors/2020-10-06T08:50:29+00:00weekly0.5https://darkwood-fr.github.io/flow/blog/2020-10-06T08:49:55+00:00weekly0.5https://darkwood-fr.github.io/flow/docs/getting-started/2020-10-06T08:49:15+00:00weekly0.5https://darkwood-fr.github.io/flow/docs/2020-10-06T08:48:23+00:00weekly0.5https://darkwood-fr.github.io/flow/2020-10-06T08:47:36+00:00weekly0.5 \ No newline at end of file +https://darkwood-com.github.io/flow/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/async-handler/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/blog/say-hello-to-doks/2020-11-04T09:19:42+01:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/contributors/henk-verlinde/2020-11-04T09:19:42+01:00weekly0.5https://darkwood-com.github.io/flow/contributors/matyo91/2020-10-06T08:50:45+00:00weekly0.5https://darkwood-com.github.io/flow/contributors/2020-10-06T08:50:29+00:00weekly0.5https://darkwood-com.github.io/flow/blog/2020-10-06T08:49:55+00:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/2020-10-06T08:49:15+00:00weekly0.5https://darkwood-com.github.io/flow/docs/2020-10-06T08:48:23+00:00weekly0.5https://darkwood-com.github.io/flow/2020-10-06T08:47:36+00:00weekly0.5 \ No newline at end of file