--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
По поводу timeout.
"If an integer timeout value is provided, a timeout will occur unless
a request or a message is received withinTimeout milliseconds."
Т.е. любое другое сообщение отменит timeout. Как по мне - это
напрашиваться на ошибки.
2016-08-04 12:20 GMT+02:00 Artem Golovinsky <artemgo...@gmail.com>:
> Вообще в генсервере есть штука специальная для этого - можно вернуть
> timeout. Почитайте документацию как его использовать.
>
> Ваш коллега неправ. Вводить новую и довольно сложную сущность ради таймера
> нет никакого смысла.
> В большинстве случаев генсервер вполне себе заменяет генфсм.
>
> 4 августа 2016 г., 13:15 пользователь 'Max Pantuhin' via Erlang по-русски
> <erlang-russian@googlegroups.com> написал:
>
>> Помогите разобраться.
>> Нужно было сделать некие периодические действия - проверять чего-то там
>> через промежутки времени. Строго выдержывать промежутки не надо.
>>
>> Я реализовал на gen_server-е - он в конце проверки вызывает
>> erlang:send_after самому-себе и референс на таймер запоминает.
>> При получении такого сообщения таймер по референсу удаляет, делает
>> проверки и ставит новый таймер.
>>
>> Коллега мой говорит, что я нарушил паттерн и надо было делать на gen_fsm.
>> А по моему, зачем? Состояний же нет.
>> --
>> Кто прав?
>>
>> --
>> Вы получили это сообщение, поскольку подписаны на группу "Erlang
>> по-русски".
>> Чтобы отменить подписку на эту группу и больше не получать от нее
>> сообщения, отправьте письмо на электронный адрес
>> Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный
>> адрес erlang-russian@googlegroups.com.
>> Чтобы настроить другие параметры, перейдите по ссылке
>> https://groups.google.com/d/optout.
>
>
>
>
> --
> Best regards,
> Artem Golovinsky
>
> --
> Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
> Чтобы отменить подписку на эту группу и больше не получать от нее сообщения,
> отправьте письмо на электронный адрес
> Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный
> адрес erlang-russian@googlegroups.com.
> Чтобы настроить другие параметры, перейдите по ссылке
> https://groups.google.com/d/optout.
--
Best regards,
Paul Peregud
+48602112091
--
Вы получили это сообщение, поскольку подписаны на группу Erlang по-русски.
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу erlang-russian@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/d/optout.
Вообще в генсервере есть штука специальная для этого - можно вернуть timeout. Почитайте документацию как его использовать.Ваш коллега неправ. Вводить новую и довольно сложную сущность ради таймера нет никакого смысла.В большинстве случаев генсервер вполне себе заменяет генфсм.
4 августа 2016 г., 13:15 пользователь 'Max Pantuhin' via Erlang по-русски <erlang-...@googlegroups.com> написал:
Помогите разобраться.
Нужно было сделать некие периодические действия - проверять чего-то там через промежутки времени. Строго выдержывать промежутки не надо.
Я реализовал на gen_server-е - он в конце проверки вызывает erlang:send_after самому-себе и референс на таймер запоминает.
При получении такого сообщения таймер по референсу удаляет, делает проверки и ставит новый таймер.
Коллега мой говорит, что я нарушил паттерн и надо было делать на gen_fsm. А по моему, зачем? Состояний же нет.
--
Кто прав?
--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.
--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.
--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.
Скажу сразу, что я не фанат gen_fsm. И для КА с большим количеством состояний или со сложной таблицей переходов писать gen_fsm - это для сильных духом. Для таких КА есть другие методы ;)
Например, чтобы можно было описать полную таблицу переходов в виде матрицы или списка и просто указать callbacks, которые вызывать при том или ином переходе
--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
On Aug 5, 2016 9:55 PM, "Alexandre Beniaminov" <abeni...@gmail.com> wrote:
>>
>> Например, чтобы можно было описать полную таблицу переходов в виде матрицы или списка и просто указать callbacks, которые вызывать при том или ином переходе
>
>
> Да, я вот так и делал:
>
> все состояния пронумерованы
>
> в ets ordered_set хранятся переходы, например:
> ...
> {346 , wait, signal, move_forward, 1000, 347, 386} %% состояние 346, в течении 1 секунды ждать сигнала двигаться вперед, если дождался переход в состояние 347, нет - 386
>
> {347, sense, ahead, 1, 348, 387}
> ...
>
> self-активный процесс, типа того, который обсуждался в этой ветке, в стейте которого лежит текущее состояние, в цикле запрашивает по этому состоянию переход из таблицы lookup - ом. Зная, что второй элемент - имя действия, а остальные элементы - параметры, вызывает соответсвующую функцию апплаем. Запоминает в стейте новое состояние и вызывает цикл.
>
Вот я к раз думаю про что-то подобное, посмотрев, как FSM реализованы в Osmocom (на С).
У меня только один вопрос - неужели нет какой-то стандартной библиотеки для этого? Это же куда компактнее и удобнее, чем все эти gen_fsm.
Please excuse typos. Written with a touchscreen keyboard.
--
Regards,
Alexander Chemeris
CEO Fairwaves, Inc.
https://fairwaves.co
--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Я не понимаю, как прогать протоколы на gen_fsm.
Как это тестировать то? Тесты более чем на 2-3 процесса уже превращаются в костыли и подпорки для синхронизации, что бы они не мигали
--
Я не нашел такой библиотеки. Основная сложность, как мне кажется, в создании такой большой матрицы переходов. Правда, часто она бывает сильно разрежена и с выраженной кластерностью, тем самым напрашивается мысль об языке описания переходов ( не самих функций действия).
5 августа 2016 г., 22:05 пользователь Alexander Chemeris <alexander...@gmail.com> написал:
On Aug 5, 2016 9:55 PM, "Alexandre Beniaminov" <abeni...@gmail.com> wrote:
>>
>> Например, чтобы можно было описать полную таблицу переходов в виде матрицы или списка и просто указать callbacks, которые вызывать при том или ином переходе
>
>
> Да, я вот так и делал:
>
> все состояния пронумерованы
>
> в ets ordered_set хранятся переходы, например:
> ...
> {346 , wait, signal, move_forward, 1000, 347, 386} %% состояние 346, в течении 1 секунды ждать сигнала двигаться вперед, если дождался переход в состояние 347, нет - 386
>
> {347, sense, ahead, 1, 348, 387}
> ...
>
> self-активный процесс, типа того, который обсуждался в этой ветке, в стейте которого лежит текущее состояние, в цикле запрашивает по этому состоянию переход из таблицы lookup - ом. Зная, что второй элемент - имя действия, а остальные элементы - параметры, вызывает соответсвующую функцию апплаем. Запоминает в стейте новое состояние и вызывает цикл.
>Вот я к раз думаю про что-то подобное, посмотрев, как FSM реализованы в Osmocom (на С).
У меня только один вопрос - неужели нет какой-то стандартной библиотеки для этого? Это же куда компактнее и удобнее, чем все эти gen_fsm.
Please excuse typos. Written with a touchscreen keyboard.
--
Regards,
Alexander Chemeris
CEO Fairwaves, Inc.
https://fairwaves.co
--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.
Каждый коллбек сам решает по какому сообщению в какое состояние автомату скакать, вот и усё.
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.