From b2045937f3229f996d4f9dad953964335dfbb892 Mon Sep 17 00:00:00 2001 From: matyo91 Date: Sun, 14 Apr 2024 21:01:57 +0000 Subject: [PATCH] deploy: 2ea00d2a76d327208b3fb6ed1861f736ac2658b6 --- docs/getting-started/changelog/index.html | 2 +- docs/getting-started/driver/index.html | 9 +++++---- docs/getting-started/flow/index.html | 2 +- docs/getting-started/index.html | 2 +- docs/getting-started/index.xml | 6 ++---- docs/getting-started/introduction/index.html | 2 +- docs/getting-started/ip-strategy/index.html | 2 +- docs/getting-started/license/index.html | 2 +- docs/getting-started/ressources/index.html | 2 +- docs/index.html | 2 +- ...457d92da689c569ec168202fb9818bbdf6f69ef0e9059e4e93.js | 1 - ...cce3cd2205e9d0046245e6e31f6d26cd8a67c3ae8ae2c0fed1.js | 1 + 12 files changed, 16 insertions(+), 17 deletions(-) delete mode 100644 index.min.30a02c1fd697b5a1fd3a02af6ec56bf4b7510d72941b30dd07d63731c270c203e891dd504255c2457d92da689c569ec168202fb9818bbdf6f69ef0e9059e4e93.js create mode 100644 index.min.5a0fd019a8915330cb81ee1ec8ce29216edfb9fa572fd4a0d403a066e8f4703f8f86e1b86e7a5ccce3cd2205e9d0046245e6e31f6d26cd8a67c3ae8ae2c0fed1.js diff --git a/docs/getting-started/changelog/index.html b/docs/getting-started/changelog/index.html index da8b4f77..d733339e 100644 --- a/docs/getting-started/changelog/index.html +++ b/docs/getting-started/changelog/index.html @@ -5,5 +5,5 @@ Getting Started

Changelog

Changelog can be found https://github.com/darkwood-fr/flow/blob/1.x/CHANGELOG.md

Edit this page on GitHub

- + \ No newline at end of file diff --git a/docs/getting-started/driver/index.html b/docs/getting-started/driver/index.html index 1d447ec7..7286ffe3 100644 --- a/docs/getting-started/driver/index.html +++ b/docs/getting-started/driver/index.html @@ -2,13 +2,14 @@

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
+Getting Started

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

Revolt Driver

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

composer require revolt/event-loop
-

More documentation can be found https://revolt.run

Spatie Driver

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

composer require spatie/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

- + \ No newline at end of file diff --git a/docs/getting-started/flow/index.html b/docs/getting-started/flow/index.html index 08667d30..19a3cc86 100644 --- a/docs/getting-started/flow/index.html +++ b/docs/getting-started/flow/index.html @@ -5,5 +5,5 @@ 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 129a9964..41a817af 100644 --- a/docs/getting-started/index.html +++ b/docs/getting-started/index.html @@ -4,5 +4,5 @@ Getting Started - + \ No newline at end of file diff --git a/docs/getting-started/index.xml b/docs/getting-started/index.xml index da88b1e4..2094ad4a 100644 --- a/docs/getting-started/index.xml +++ b/docs/getting-started/index.xml @@ -5,10 +5,8 @@ composer require darkwood/flow Usage A working script is available in the bundle 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. 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. -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 : +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. 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. diff --git a/docs/getting-started/introduction/index.html b/docs/getting-started/introduction/index.html index b4d7d2bd..5b537e03 100644 --- a/docs/getting-started/introduction/index.html +++ b/docs/getting-started/introduction/index.html @@ -6,5 +6,5 @@

Usage

A working script is available in the bundled examples directory

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

Flow →
- + \ 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 6c0d693e..2223c01a 100644 --- a/docs/getting-started/ip-strategy/index.html +++ b/docs/getting-started/ip-strategy/index.html @@ -5,5 +5,5 @@ 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 353e37eb..35f1a830 100644 --- a/docs/getting-started/license/index.html +++ b/docs/getting-started/license/index.html @@ -16,5 +16,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Edit this page on GitHub

← Changelog
- + \ No newline at end of file diff --git a/docs/getting-started/ressources/index.html b/docs/getting-started/ressources/index.html index aba782e8..7db3bf3b 100644 --- a/docs/getting-started/ressources/index.html +++ b/docs/getting-started/ressources/index.html @@ -11,5 +11,5 @@ 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

← Ip Strategy
Changelog →
- + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index b44e6d82..14f5dba2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -4,5 +4,5 @@ Getting Started
- + \ No newline at end of file diff --git a/index.min.30a02c1fd697b5a1fd3a02af6ec56bf4b7510d72941b30dd07d63731c270c203e891dd504255c2457d92da689c569ec168202fb9818bbdf6f69ef0e9059e4e93.js b/index.min.30a02c1fd697b5a1fd3a02af6ec56bf4b7510d72941b30dd07d63731c270c203e891dd504255c2457d92da689c569ec168202fb9818bbdf6f69ef0e9059e4e93.js deleted file mode 100644 index 2497f2f7..00000000 --- a/index.min.30a02c1fd697b5a1fd3a02af6ec56bf4b7510d72941b30dd07d63731c270c203e891dd504255c2457d92da689c569ec168202fb9818bbdf6f69ef0e9059e4e93.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.5a0fd019a8915330cb81ee1ec8ce29216edfb9fa572fd4a0d403a066e8f4703f8f86e1b86e7a5ccce3cd2205e9d0046245e6e31f6d26cd8a67c3ae8ae2c0fed1.js b/index.min.5a0fd019a8915330cb81ee1ec8ce29216edfb9fa572fd4a0d403a066e8f4703f8f86e1b86e7a5ccce3cd2205e9d0046245e6e31f6d26cd8a67c3ae8ae2c0fed1.js new file mode 100644 index 00000000..990518b9 --- /dev/null +++ b/index.min.5a0fd019a8915330cb81ee1ec8ce29216edfb9fa572fd4a0d403a066e8f4703f8f86e1b86e7a5ccce3cd2205e9d0046245e6e31f6d26cd8a67c3ae8ae2c0fed1.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