Проект "Свободные голосования"

Электронная системы голосований через интернет
Текущее время: 23 ноя 2024, 23:39

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: transport::modules::ITransportModule
СообщениеДобавлено: 09 окт 2011, 13:47 
Не в сети

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
Обсуждаем интерфейс транспортного модуля.
Код:
class ITransportModule
{
public:
vector<pollfd> poll() const; //man poll, man WSAPoll, man select. (windows, без поддержки poll, придется эмулировать)
int process(pollfd& fd); //обработка соединения
int send(cosnt TPacket& packet, bitset<32> group); //отправка пакета, group введено для возможности отправки по разным группам.
int recv(TRecvCallback callback); //установки функции, вызываемой при получении пакета
};

Думаю этого достаточно.

_________________
AF4B DFB0 0E41 2F7A 09FD 4971 96F0 B176 EA1C DD85


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: transport::modules::ITransportModule
СообщениеДобавлено: 09 окт 2011, 14:23 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Я не могу понять какой язык вы используете C++ или C#?

C# хорош для программирования, но необходимость тащить за собой Mono или .Net сильно уменьшает его преимущества.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: transport::modules::ITransportModule
СообщениеДобавлено: 09 окт 2011, 14:59 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
По существу - не понял назначение методов process и poll.

По идее, максимум который там нужен - init и finalize методы, которые будет вызываться при загрузке модуля. Зачем в публичных мотодех что-то, кроме передачи и получения сообщений не понял.

Кстати, есть такая хорошая библиотечка libevent. Возможно, имеет смысл использовать, что-бы не заморачиваться с низким уровнем. Я ее пробовал использовать для своих проектов - очень понравилась.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: transport::modules::ITransportModule
СообщениеДобавлено: 09 окт 2011, 20:49 
Не в сети

Зарегистрирован: 24 сен 2011, 23:06
Сообщения: 395
Андрей писал(а):
По идее, максимум который там нужен - init и finalize методы, которые будет вызываться при загрузке модуля. Зачем в публичных методах что-то, кроме передачи и получения сообщений не понял.
У меня хуже понимание. Если как транспортный модуль понимать распределённую сеть, то зачем низкоуровневые методы. А если как транспортный модуль понимать способы соединения внутри распределённой сети (tcp, udp, sctp), то их маловато. Но во втором случае на любой системе мы дефакто имеем все протоколы и не вижу причины использовать их меньше чем все. Имеет смысл подождать продолжения. :?:

Опять непонятно кто кому будет модулем. Транспорт представляющий из себя узел распределённой сети будет модулем для системы голосования или наоборот. Мне всю дорогу вдалбливали, что модулем должно быть то, что в рамках системы имеет меньшее время жизни.

Андрей писал(а):
Кстати, есть такая хорошая библиотечка libevent. Возможно, имеет смысл использовать, что-бы не заморачиваться с низким уровнем. Я ее пробовал использовать для своих проектов - очень понравилась.
А ещё есть boost::asio c портабельной реализацией сетевой системы. При этом boost это то, что "завтра" будет в stl. ;)

_________________
Во вселенной нет общества в котором "Vox populi, vox Dei" не переводилось бы "О, Боже, как мы в это вляпались".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: transport::modules::ITransportModule
СообщениеДобавлено: 09 окт 2011, 21:09 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Dim писал(а):
Андрей писал(а):
По идее, максимум который там нужен - init и finalize методы, которые будет вызываться при загрузке модуля. Зачем в публичных методах что-то, кроме передачи и получения сообщений не понял.
У меня хуже понимание. Если как транспортный модуль понимать распределённую сеть, то зачем низкоуровневые методы. А если как транспортный модуль понимать способы соединения внутри распределённой сети (tcp, udp, sctp), то их маловато. Но во втором случае на любой системе мы дефакто имеем все протоколы и не вижу причины использовать их меньше чем все. Имеет смысл подождать продолжения. :?:

При всем желании никто не сможет реализовать все эти модули одновременно. Все-равно они будут реализовываться по порядку и tcp - логичное начало.

Dim писал(а):
Опять непонятно кто кому будет модулем. Транспорт представляющий из себя узел распределённой сети будет модулем для системы голосования или наоборот. Мне всю дорогу вдалбливали, что модулем должно быть то, что в рамках системы имеет меньшее время жизни.

Транспортный модуль будет модулем в служебном сервисе (демоне).

Dim писал(а):
Андрей писал(а):
Кстати, есть такая хорошая библиотечка libevent. Возможно, имеет смысл использовать, что-бы не заморачиваться с низким уровнем. Я ее пробовал использовать для своих проектов - очень понравилась.
А ещё есть boost::asio c портабельной реализацией сетевой системы. При этом boost это то, что "завтра" будет в stl. ;)

Многие-ли проекты уже используют boost::asio?

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: transport::modules::ITransportModule
СообщениеДобавлено: 09 окт 2011, 22:39 
Не в сети

Зарегистрирован: 24 сен 2011, 23:06
Сообщения: 395
Андрей писал(а):
При всем желании никто не сможет реализовать все эти модули одновременно. Все-равно они будут реализовываться по порядку и tcp - логичное начало.
Да и не надо их все сразу реализовывать. Это не причина выноса в модули. Достаточно начинать использовать протоколы по необходимости. Практически все функции можно реализовать используя только tcp. Остальные нужны только для повышения эффективности, когда уткнёмся в физические ограничения tcp.
Андрей писал(а):
Транспортный модуль будет модулем в служебном сервисе (демоне).
Какие функции у демона?
Андрей писал(а):
Многие-ли проекты уже используют boost::asio?
Не задумывался даже. Просто boost используется для обкатки того, что впоследствии входит в стандартные библиотеки языка C++. Т.е. Ваш вопрос почти аналогичен "многие ли проекты используют std::string?"

_________________
Во вселенной нет общества в котором "Vox populi, vox Dei" не переводилось бы "О, Боже, как мы в это вляпались".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: transport::modules::ITransportModule
СообщениеДобавлено: 10 окт 2011, 00:51 
Не в сети

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
Андрей писал(а):
Я не могу понять какой язык вы используете C++ или C#?

С++, к C# у меня крайне негативное отношение.
Андрей писал(а):
По существу - не понял назначение методов process и poll.

Для ожидания событий связанных с соединениями.
Андрей писал(а):
Кстати, есть такая хорошая библиотечка libevent.

Судя по описаниям - как раз то, что я хотел реализовать с помощью poll.
Изучу возможности библиотеки - выскажу мнение.
Dim писал(а):
А ещё есть boost::asio c портабельной реализацией сетевой системы. При этом boost это то, что "завтра" будет в stl. ;)

На данный момент boost меня немного пугает.
ps по поводу модулей - хуже ведь от них не станет? Каждый сможет особо не заморачиваясь написать свой собственный модуль.

_________________
AF4B DFB0 0E41 2F7A 09FD 4971 96F0 B176 EA1C DD85


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: transport::modules::ITransportModule
СообщениеДобавлено: 10 окт 2011, 01:21 
Не в сети

Зарегистрирован: 24 сен 2011, 23:06
Сообщения: 395
Dim писал(а):
На данный момент boost меня немного пугает.
Если не касаться метапрограммирования, то в нём ничего страшного и нет.
Dim писал(а):
ps по поводу модулей - хуже ведь от них не станет? Каждый сможет особо не заморачиваясь написать свой собственный модуль.
C++ не Java. Несколько лет назад читал довольно объёмную статью о "прелестях и радостях" построения системы плагинов для C++ в условиях кроссплатформной и кросскомпиляторной разработки. Вводная часть изобиловала выражениями типа: не обязан, не гарантирует, неопределённый результат.
При этом в целом являясь сторонником плагинов считаю, что применять их следует с большой осторожностью и там где по другому никак не обойтись.

_________________
Во вселенной нет общества в котором "Vox populi, vox Dei" не переводилось бы "О, Боже, как мы в это вляпались".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: transport::modules::ITransportModule
СообщениеДобавлено: 10 окт 2011, 11:14 
Не в сети

Зарегистрирован: 27 авг 2011, 22:36
Сообщения: 460
Dim писал(а):
Если не касаться метапрограммирования, то в нём ничего страшного и нет.

Мета-программирование меня не пугает, меня пугает размер библиотеки, и то что ее повсюду придется таскать. При веских аргументах я готов попробовать boost. Dim, а у вас собственно есть опыт работы с boost?
Dim писал(а):
C++ не Java. Несколько лет назад читал довольно объёмную статью о "прелестях и радостях" построения системы плагинов для C++ в условиях кроссплатформной и кросскомпиляторной разработки. Вводная часть изобиловала выражениями типа: не обязан, не гарантирует, неопределённый результат.
При этом в целом являясь сторонником плагинов считаю, что применять их следует с большой осторожностью и там где по другому никак не обойтись.

Могли бы вы найти подобную статью. Лично я проблем не вижу: существуют лишь некоторые ограничения.

_________________
AF4B DFB0 0E41 2F7A 09FD 4971 96F0 B176 EA1C DD85


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: transport::modules::ITransportModule
СообщениеДобавлено: 10 окт 2011, 12:16 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Dim писал(а):
Андрей писал(а):
При всем желании никто не сможет реализовать все эти модули одновременно. Все-равно они будут реализовываться по порядку и tcp - логичное начало.
Да и не надо их все сразу реализовывать. Это не причина выноса в модули. Достаточно начинать использовать протоколы по необходимости. Практически все функции можно реализовать используя только tcp. Остальные нужны только для повышения эффективности, когда уткнёмся в физические ограничения tcp.

Причина выноса в модули - потенциал для дальнейшего развития. Что-бы в будущем в систему можно было, например, быстро добавить поддержку FreeNet, I2P или других распределенных сетей.

Dim писал(а):
Андрей писал(а):
Транспортный модуль будет модулем в служебном сервисе (демоне).
Какие функции у демона?

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

Dim писал(а):
Андрей писал(а):
Многие-ли проекты уже используют boost::asio?
Не задумывался даже. Просто boost используется для обкатки того, что впоследствии входит в стандартные библиотеки языка C++. Т.е. Ваш вопрос почти аналогичен "многие ли проекты используют std::string?"

Я к тому, что нужно выбирать хотя-бы немного опробованные инструменты. Заниматься их тестированием в контексте нашего проекта - это конечно неплохо для этих инструментов, но плохо для нашего проекта. Насколько я знаю, предложенная мною библиотека libevent уже используется в очень многих проектах. Что позволяет надеяться на ее качество.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB