> For the complete documentation index, see [llms.txt](https://evlko.gitbook.io/machinations/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://evlko.gitbook.io/machinations/svoistva-mekhanizmov/pulling-and-pushing.md).

# Принятие и отдача ресурсов

Механизм может быть настроен либо на Push, либо Pull Resources, в зависимости от того, какое действие он должен предпринять после активации.

{% hint style="info" %}
Установите атрибут в раскрывающемся меню в Functional > Action![](/files/-M3BqWnxBl6_e1w0Lz4z)
{% endhint %}

Когда механизм запускается, он будет пытаться извлечь ресурсы через любые входы, подключенные к нему. Количество ресурсов, которые он извлекает, определяется скоростью отдельного входного соединения с ресурсами - числом рядом со стрелкой

{% hint style="success" %}
По умолчанию у механизмов стоит pull режим
{% endhint %}

Кроме того, узел может быть установлен в режиме push. В этом режиме, когда узел запускается, он отдает ресурсы вдоль своих выходных соединений.

{% hint style="info" %}
Механизм в режиме push помечен p.&#x20;

Хранилище, которое имеет только выходы, всегда считается находящимся в режиме push, в этом случае маркер p опускается.
{% endhint %}

![](/files/-M2yxXaCq7Xdl3yYGnQj)

**Если узел пытается получить больше ресурсов**, чем имеется на вход, он будет обрабатывать это одним из двух способов:&#x20;

1. По умолчанию узел забирает столько ресурсов, сколько может, вплоть до скорости потока своих входов. Если ресурсов недостаточно, все равно забирает те, которые есть.&#x20;
2. В качестве альтернативы, узел может быть установлен для принятие всех ресурсов, только если все доступны. Иначе в этом режиме, когда не все ресурсы доступны, ни один не извлекается.

{% hint style="info" %}
Механизмы в режиме pull all помечены &
{% endhint %}

Эти правила также применяются к отдающим узлам: по умолчанию push узел отправляет столько ресурсов, сколько доступно по его выходному соединению ресурсов, вплоть до скорости потока на выходе.

{% hint style="info" %}
Механизм в режиме push и *all* отправляют ресурсы только тогда, когда он может предоставить все свои выходы. Это значит, что механизмы в режиме push могут быть обозначены сразу *и p и &*.
{% endhint %}

![Push и Pull All](/files/-M2yyP0lNuosLH-c6yzG)

.**Пример песочных часов**

В приведенном ниже видео с использованием хранилищ и соединений с ресурсами мы создали простые песочные часы.

Верхнее хранилище (A) пассивно и содержит 5 ресурсов, а нижнее хранилище (B) работает автоматически и запускается без каких-либо ресурсов. Каждый шаг по времени (в данном случае 1 секунда), B будет тянуть один ресурс из A, пока все ресурсы не переместятся из A в B.

{% embed url="<https://youtu.be/O62HdjzGOM4>" %}

{% hint style="info" %}
Вам может это пригодиться:
{% endhint %}
