LINUX.ORG.RU

Вопрос по архитектуре. Не могу придумать сущность.


0

0

Есть графический интерфейс типа такого:

http://deltafsd.sourceforge.net/sample1.gif

Это датафлоу-программинг называется. Ориентация на потоки данных. Вы соединяете блоки с разным функционалом, получая сеть, которая в целом способна на что-то осмысленное.

Один блок (модуль) - это чёрный ящик, у которого есть:
1. Входы.
2. Выходы.
3. Извне настраиваемые параметры.

У меня затруднение - какие блоки (модули) нужно придумать, чтобы используя их в таком редакторе можно было бы реализовать TCP-сервер, слушающий один порт и способный обрабатывать на нём переменное кол-во соединений независимо.

Я могу сделать чёрный ящик, который внутри себя умеет слушать порт, умеет запускать треды или процессы для каждого соединения, но вопрос в том, как эти отдельные TCP-соединения, которые он "поймал", можно различать извне, работая в графическом редакторе, в редакторе диаграмм или сетей. Ну неважно, как его назвать, на картинке видно, что это.

Спасибо, короче )

icq 297566544


Анонимус рекомендует использовать паттерн "god object"

anonymous
()

Тебе видимо нужен такой блок который будет заключать в себе набор других блоков. И связь такого вида чтобы описанная этим блоком конструкция применялась к каждому соединению паралелльно. Потом опционально можно сделать связь такого типа чтобы из этого "треда" можно было обращатся / передавать данные в основной.

Возможно поможет:

http://www.haskell.org/arrows/

http://en.wikibooks.org/wiki/Haskell/Understanding_arrows

imp ★★
()

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

    _____
   | tcp |
-1-|=====|-1-
-2-|=====|-2-
-3-|=====|-3-
     ...
-N-|=====|-N-
    _____

Lucky ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.