Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подскажите по дизайну классов. 
V
    Опции темы
boostcoder
Дата 13.2.2012, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



всем доброго вечера! smile 

есть следующие сущности:
1. context - основной класс, без которого никакие из ниже перечисленных не могут существовать. для приложения возможен лишь один экземпляр этого класса.
2. socket - собственно сокет. создается исключительно при помощи context`а.
3. session - объект, описывающий состояние сокета. создается исключительно при помощи сокета, который и описывает. может использовать исключительно с сокетом который создал его.
4. message - тип сообщения. используется для отправки/приема данных. создается исключительно при помощи сокета. может использовать исключительно с сокетом который создал его.

в псевдокоде, как-то так:
Код

int main() {
   context ctx;
   
   socket sock = ctx->socket(...); // 1
   
   sock->connect(...); // 2

   sock->set_options(...); // 3
   
   message msg = sock->message(...); // 4
   
   msg->init(...); // 5
   
   sock->send(msg); // 6
   msg->send(); // 7
   sock->message("string")->send(); // 8
}

http://liveworkspace.org/code/bf563fa206d0...4956c7a7beb1df5

под номером 1 и 2 вопрос: при создании объекта сокета, позволить ли создание сокета без указания адреса сразу?
под номером 3: опции сокету задавать позже? или сразу при создании?
под номером 4 и 5: сообщение инициализировать данными сразу? или позже?
под номером 6, 7 и 8: три способа отправки сообщения.

все объекты - смарт указатели. используется пул памяти/объектов. так что затраты на создание/пересоздание практически нулевые.


скорее интересует мнение форумчан, и мысли.

благодарен.
PM WWW   Вверх
Sahab
Дата 13.2.2012, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Цитата(boostcoder @  13.2.2012,  21:56 Найти цитируемый пост)
под номером 1 и 2 вопрос: при создании объекта сокета, позволить ли создание сокета без указания адреса сразу?

да. А так же с возможностью указания дескриптора сокета.
Цитата(boostcoder @  13.2.2012,  21:56 Найти цитируемый пост)
под номером 3: опции сокету задавать позже? или сразу при создании?

думаю позже.
Цитата(boostcoder @  13.2.2012,  21:56 Найти цитируемый пост)
под номером 4 и 5: сообщение инициализировать данными сразу? или позже?

а какой резон это делать позже?
PM MAIL   Вверх
boostcoder
Дата 13.2.2012, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Sahab @  13.2.2012,  23:24 Найти цитируемый пост)
а какой резон это делать позже?

к примеру:
Код

while ( condition ) {
   msg->init( some data );
   msg->send();
   // msg->init( some data )->send();
}


PM WWW   Вверх
feodorv
Дата 14.2.2012, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 11
Всего: 45



Цитата(boostcoder @  13.2.2012,  21:56 Найти цитируемый пост)
позволить ли создание сокета без указания адреса сразу

В принципе, адрес нужен для connect'а. А сам сокет можно создавать и без привязки к адресу. Правда, придётся сразу указать некоторые свойства сокета: TCP/UDP/IP::num/UNIX/SelfMade/...
Цитата(boostcoder @  13.2.2012,  21:56 Найти цитируемый пост)
опции сокету задавать позже? или сразу при создании?

Многие опции TCP/IP-сокету разрешается задавать исключительно до connect'а, поэтому "сразу при создании" имеет смысл. С другой стороны, опции могут быть уж слишком разнородны, непонятен синтаксис задания таких опций при создании сокета.
Цитата(boostcoder @  13.2.2012,  21:56 Найти цитируемый пост)
сообщение инициализировать данными сразу? или позже?

А нельзя предусмотреть и тот и другой вариант?)))


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
boostcoder
Дата 14.2.2012, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(feodorv @  14.2.2012,  00:08 Найти цитируемый пост)
Правда, придётся сразу указать некоторые свойства сокета: TCP/UDP/IP::num/UNIX/SelfMade/...

угу.

Цитата(feodorv @  14.2.2012,  00:08 Найти цитируемый пост)
опции могут быть уж слишком разнородны, непонятен синтаксис задания таких опций при создании сокета.

тоже верно.

Цитата(feodorv @  14.2.2012,  00:08 Найти цитируемый пост)
А нельзя предусмотреть и тот и другой вариант?)

можно)
просто интересуют предпочтения)

PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0666 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.